华南理工大学数据结构复习提纲一

合集下载

(完整word版)数据结构复习提纲

(完整word版)数据结构复习提纲

数据结构复习提纲复习内容:基本概念掌握:数据结构,逻辑结构,存储结构;数据类型;算法;T(n),S(n)的理解。

要学习的数据结构定义形式:n(n〉=0)个数据元素的有限集合.将约束:1、数据元素本身.2、数据元素之间的关系。

3、操作子集。

大多有两种存储(表示、实现)方式:1、顺序存储。

2、链式存储.一、线性结构:1、线性表:n(n〉=0)个相同属性的数据元素的有限序列。

12种基本操作.顺序表:9种基本操作算法实现.单链表:11种基本操作算法实现。

(重点:插入、删除)顺序表与单链表之时间性能、空间性能比较.循环链表:类型定义与单链表同。

算法实现只体现在循环终止的条件不同。

双向链表:重点插入、删除算法。

2、操作受限的线性表有:栈、队列。

栈:顺序栈;链栈(注意结点的指针域指向)。

(取栈顶元素、入栈、出栈)队列:循环队列(三个问题的提出及解决);链队列(注意头结点的作用).(取队头元素、入队、出队。

链队列中最后一个元素出队)3、数据元素受限的线性表有:串、数组、广义表。

串:定长顺序存储;堆分配存储.块链存储(操作不方便)数组:顺序存储。

特殊矩阵的压缩存储;稀疏矩阵(三元组表示、十字链表)广义表:长度、深度.取表头(可以是原子也可以是子表);取表尾(肯定是子表)。

链式存储。

二、树型结构:1、树:n(n>=0)个数据元素的有限集合.这些数据元素具有以下关系:……。

(另有递归定义。

)术语;存储(双亲表示、孩子表示、孩子双亲表示、孩子兄弟表示)。

2、二叉树:n(n〉=0)个数据元素的有限集合。

这些数据元素具有以下关系:……。

(另有递归定义)5个性质(理解、证明;拓展)。

遍历二叉树(定义、序列给出、递归算法、非递归算法);遍历二叉树应用:表达式之前序表达式、后序表达式、中序表达式转换。

线索二叉树(中序线索二叉树)。

树森林与二叉树的转换。

树与森林的遍历.赫夫曼树及其应用:定义、构造、赫夫曼编码。

三、图形结构:n(n〉=0)个数据元素的有限集合。

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述1. 数据结构的定义和作用2. 常见的数据结构类型3. 数据结构与算法的关系二、线性结构1. 数组的概念及其特点2. 链表的概念及其分类3. 栈的定义和基本操作4. 队列的定义和基本操作三、树结构1. 树的基本概念及定义2. 二叉树的性质和遍历方式3. 平衡二叉树的概念及应用4. 堆的定义和基本操作四、图结构1. 图的基本概念及表示方法2. 图的遍历算法:深度优先搜索和广度优先搜索3. 最短路径算法及其应用4. 最小生成树算法及其应用五、查找与排序1. 查找算法的分类及其特点2. 顺序查找和二分查找算法3. 哈希查找算法及其应用4. 常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、快速排序六、高级数据结构1. 图的高级算法:拓扑排序和关键路径2. 并查集的定义和操作3. 线段树的概念及其应用4. Trie树的概念及其应用七、应用案例1. 使用数据结构解决实际问题的案例介绍2. 如何选择适合的数据结构和算法八、复杂度分析1. 时间复杂度和空间复杂度的定义2. 如何进行复杂度分析3. 常见算法的复杂度比较九、常见问题及解决方法1. 数据结构相关的常见问题解答2. 如何优化算法的性能十、总结与展望1. 数据结构学习的重要性和难点2. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。

希望能够帮助你进行复习和回顾,加深对数据结构的理解和掌握。

在学习过程中,要注重理论与实践相结合,多进行编程练习和实际应用,提高数据结构的实际运用能力。

祝你复习顺利,取得好成绩!。

数据结构与算法复习提纲(1)

数据结构与算法复习提纲(1)

数据结构与算法复习提纲(1)数据结构与算法复习提纲线性表部分:1、顺序表的基本操作:创建、插⼊、删除、查找、修改、遍历、输出2、带头结点单链表的基本操作:创建、插⼊(头插、尾插、任意位置插⼊)、删除(头删、尾删、任意位置删除)、查找、修改、定位、输出、求表长、遍历的基本应⽤3、带头结点的循环单链表的基本操作:创建、插⼊(头插、尾插、任意位置插⼊)、删除(头删、尾删、任意位置删除)、查找、修改、定位、输出、求表长、遍历的基本应⽤4、线性表的应⽤:有序顺序表的插⼊;有序单链表的插⼊;顺序表的逆置、单链表的逆置;顺序表归并、单链表归并栈和队列部分:1、顺序栈的基本操作:创建、⼊栈、出栈、取得栈顶元素(注意top变量的取值)、判栈空、判栈满、遍历2、链栈的基本操作:创建、⼊栈、出栈、判栈空、遍历3、循环队列的基本操作:创建、⼊队、出队、队空队满的判定条件、求队列长度、遍历;4、链队列的基本操作:创建、⼊队、出队、队空、遍历5、表达式求值:栈中数据的变化过程树和⼆叉树1、⼆叉树的5个基本性质2、⼆叉树的顺序存储结构3、⼆叉链表存储,相关的基本操作:前中后三种遍历、层次遍历、创建、求结点个数、求叶⼦个数、求深度、基于遍历的应⽤4、树的孩⼦兄弟链表存储结构,相关的基本操作:创建、查找某个结点的孩⼦、插⼊⼀个结点、遍历输出5、树的孩⼦兄弟链表存储结构,相关的基本操作:创建、求深度、先根遍历、插⼊结点6、⼆叉树、树与森林的应⽤:由两种遍历序列确定⼀棵⼆叉树;⼆叉树的三种遍历序列;由两种遍历序列确定⼀棵树;树(森林)与⼆叉树之间的相互转换;7、哈夫曼树及其应⽤:构造哈夫曼树、哈夫曼编码、求wpl;注意:构造哈夫曼树过程相关存储结构的变化图的部分1、图的基本概念2、图的邻接矩阵存储结构:创建、深度遍历、⼴度遍历3、图的邻接表存储结构:创建、深度遍历、⼴度遍历4、最⼩⽣成树:prim算法、kruscal算法5、最短路径:迪杰斯特拉算法、floyd算法6、拓扑排序、关键路径查找与排序部分1、带哨兵的顺序查找:算法、ASL2、折半查找:算法、查找判定树、成功与不成功的ASL3、⼆叉排序树的构造、平衡⼆叉树的构造、成功与不成功的ASL4、哈希表:构造、线性探测、⼆次探测、拉链法;成功与不成功的ASL5、直接插⼊排序、希尔排序、冒泡排序、快速排序,⼀趟排序的结果。

数据结构复习提纲

数据结构复习提纲

复习提纲:第一章:1.数据结构的基本概念;2.数据结构的4类基本结构及其特性;3.存储结构的分类及特点;4.算法的时间复杂度计算;第二章:1.线性表的基本概念;2.线性表的顺序存储结构的特点和插入删除算法;3.顺序存储结构的应用;4.单循环链表的存储结构特点,链表空的判断方法、插入、删除结点算法实现,报数游戏算法实现;5.双链表的存储特点,插入、删除结点算法实现。

第三章:1.栈的特点、对同一序列根据栈的特点进行不同入栈、出栈操作所得结果的判断;栈的实现的相关操作;2.顺序栈的4各要素和相关操作关键语句;链栈的4个要素和相关操作关键语句;3.了解队列的特点和可执行的基本操作,并能做相关判断;4.顺序循环队列的队空、队满判断条件,入队、出队操作的相关关键语句;5.顺序循环队列中对同一序列根据队列进行不同的入队、出队操作后队头和队尾指针的变化判断。

第四章:1.串的定义、串长的定义和计算、子串个数计算(注意区分:子串与非空且不同于S本身的子串);2.串的模式匹配(区分BF算法和KMP算法),掌握使用KMP算法计算next数组的值,并且要求掌握匹配过程(BF和KMP的匹配过程不同!)。

前三章程序重点掌握作业四、作业五、作业六、作业八、作业九第五章:1.特殊矩阵的压缩存储地址计算,稀疏矩阵的压缩存储结构图。

2.广义表的定义、区分原子和子表,求表头和表尾,深度和层次计算,存储结构图绘制;3.提供一广义表,写出通过head()和tail()操作求出某个原子的表达式。

4.注意:取表头时即广义表的第一个元素,外面不再加括号;而取表尾时,要将除表头元素外的其他元素一起用圆括号括起来,即将原广义表去掉表头;第六章:1.树的定义和相关基本术语;2.树的表示和各种存储结构的表示;3.二叉树的定义和结点形态;4.熟练使用二叉树的性质进行相关计算;5.掌握提供边集画树及树的存储结构图并将树转换为二叉树;6.根据后序遍历和中序遍历的序列画出二叉树直观图,并给出其先序遍历的序列,画出线索二叉树存储结构图;7.根据二叉树的顺序存储结构图,画出二叉树及二叉链存储结构图,并给出该二叉树转换后的森林。

数据结构复习提纲

数据结构复习提纲

数据结构复习提纲一、线性表线性表是最基本的数据结构之一,它是具有相同数据类型的 n 个数据元素的有限序列。

1、顺序表定义和特点:顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。

存储结构:通常使用数组来实现。

基本操作:插入、删除、查找、遍历等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(n),查找和遍历操作的时间复杂度为 O(n)。

2、链表定义和特点:链表是通过指针将各个数据元素链接起来的一种存储结构。

单链表:每个节点包含数据域和指针域,指针域指向链表的下一个节点。

双链表:节点包含两个指针域,分别指向前驱节点和后继节点。

循环链表:尾节点的指针指向头节点,形成一个环形结构。

基本操作:插入、删除、查找等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(1),查找操作的时间复杂度为 O(n)。

二、栈和队列1、栈定义和特点:栈是一种限制在一端进行插入和删除操作的线性表,遵循“后进先出”的原则。

存储结构:顺序栈和链栈。

基本操作:入栈、出栈、栈顶元素获取等。

应用:表达式求值、括号匹配、函数调用等。

2、队列定义和特点:队列是一种在一端进行插入操作,在另一端进行删除操作的线性表,遵循“先进先出”的原则。

存储结构:顺序队列和链队列。

基本操作:入队、出队、队头元素获取等。

循环队列:解决顺序队列“假溢出”问题。

应用:层次遍历、消息队列等。

三、串1、串的定义和存储方式定长顺序存储堆分配存储块链存储2、串的基本操作串的赋值、连接、比较、求子串等。

3、模式匹配算法朴素的模式匹配算法KMP 算法:理解其原理和计算 next 数组的方法。

四、数组和广义表1、数组数组的定义和存储结构数组的地址计算特殊矩阵的压缩存储(如对称矩阵、三角矩阵、稀疏矩阵)2、广义表广义表的定义和表示广义表的递归算法1、树的基本概念定义、术语(如节点、度、叶子节点、分支节点、父节点、子节点、兄弟节点、层次等)树的性质2、二叉树定义和特点二叉树的性质完全二叉树和满二叉树3、二叉树的存储结构顺序存储链式存储4、二叉树的遍历先序遍历中序遍历后序遍历层序遍历5、二叉树的递归和非递归遍历算法实现线索化的目的和方法7、树、森林与二叉树的转换8、哈夫曼树定义和构造方法哈夫曼编码六、图1、图的基本概念定义、术语(如顶点、边、权、有向图、无向图、邻接矩阵、邻接表等)2、图的存储结构邻接矩阵邻接表十字链表邻接多重表3、图的遍历深度优先搜索(DFS)广度优先搜索(BFS)4、图的应用最小生成树(Prim 算法、Kruskal 算法)最短路径(Dijkstra 算法、Floyd 算法)拓扑排序关键路径七、查找1、查找的基本概念关键字、平均查找长度等2、顺序查找算法实现时间复杂度3、折半查找算法实现时间复杂度判定树4、分块查找5、二叉排序树定义和特点插入、删除操作查找算法6、平衡二叉树定义和调整方法7、 B 树和 B+树结构特点基本操作8、哈希表哈希函数的构造方法处理冲突的方法(开放定址法、链地址法等)八、排序1、排序的基本概念排序的稳定性2、插入排序直接插入排序折半插入排序希尔排序3、交换排序冒泡排序快速排序4、选择排序简单选择排序堆排序5、归并排序6、基数排序7、各种排序算法的时间复杂度、空间复杂度和稳定性比较。

数据结构复习提纲

数据结构复习提纲

《数据结构》复习提纲1、什么是数据结构,数据结构4种基本结构: “数据结构”是研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算的一门学科。

集合、线性结构、树形结构、图形结构。

2、线性表的顺序存储和链式存储的特点:逻辑关系上相邻的两个元素在物理位置上也是相邻的。

可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式表示。

(因此线性表的顺序存储结构是一种随机存取的存储结构)3、熟悉算法2.3,算法2.4,算法2.5,算法2.7,算法2.8,算法2.11,算法2.12。

4、掌握栈和队列的特点。

5、第4章只考基本概念4.1节,第5章不考。

6、树中的基本概念;二叉树的性质(5个),包括证明。

7、二叉树的顺序存储和链式存储。

(特别是二叉链表)8、二叉树的遍历方法(先序、中序和后续),对任何一棵二叉树能够写出它的先序(中序和后续)序列。

掌握二叉树的先序(中序和后续)的递归算法。

9、掌握算法6.2、算法6.3和算法6.4。

10、掌握线索二叉树的概念,对于任意的一棵二叉树画出它的先序(中序和后续)线索二叉树。

11、掌握算法6.5,算法6.6,算法6.7。

12、掌握树的存储结构(双亲表示法、孩子兄弟表示法),掌握森林与二叉树的转换方法(孩子兄弟表示法)13、掌握哈夫曼树的构造方法,写出其对应的哈夫曼编码。

14、掌握图的基本概念。

掌握图的邻接矩阵、邻接表和逆邻接表表示。

15、掌握图的深度优先搜索和广度优先搜索,针对具体的邻接矩阵(或邻接表)写出其深度优先搜索序列和广度优先搜索序列。

16、掌握利用谱里姆算法和克鲁斯卡尔算法构造最小生成树的过程。

(图7.16和图7.18)17、掌握地杰斯特拉算法和弗洛伊德算法(见书189-190页和191-192页)18、第8章不考19、第9章掌握算法9.1,算法9.2。

什么是二叉排序树,如何生成二叉排序树(见书229页)。

掌握二叉排序树查找分析,即ASL。

数据结构复习提纲

数据结构复习提纲

数据结构复习提纲第一章绪论1.基本术语:数据,数据元素,数据对象,数据结构及其分类。

2.什么是算法?算法的特性。

3.时间复杂度及其简单计算。

第二章线性表1.线性表的定义,线性表的存储结构常有哪几种?各有何优缺点?2.顺序表的类型说明及其基本操作算法的实现3.链表结构的类型说明及其基本操作算法的实现。

表空条件,申请结点,插入,删除操作语句。

第三章栈和队列1.栈的定义及其特点。

队列的定义及其特点。

2.顺序栈的类型说明及其算法实现。

栈空,栈满条件,入栈出栈操作语句。

3.循环队列的类型说明及其算法实现。

队空,队满条件,入队出队操作,计算队列的长度语句。

第五章数组与广义表1.二维数组的两种存储方式及地址计算。

2.矩阵的压缩存储,对称矩阵,三角矩阵的地址计算。

3.什么是稀疏矩阵?稀疏矩阵的两种存储结构,算法的实现。

4.广义表的定义。

广义表的两种存储结构,广义表的表头,表尾计算第六章树和二叉树1.树的概念与定义。

2.二叉树。

满二叉树,完全二叉树的定义,二叉树的性质及其证明。

3.二叉树的存储结构及其类型说明。

4.二叉树的三种遍历及其递归算法实现。

5.树的三种存储结构。

6.树,森林与二叉树的转换。

7.哈夫曼树的定义。

哈夫曼树的构造及其哈夫曼编码。

第七章图1.图的定义及其术语。

2.图的存储结构。

邻接表,邻接矩阵。

3.图的深度,广度遍历及其应用4.最小生成树的两种构造算法。

5.什么是AOV网?拓扑排序的定义及其方法。

6.求关键路径的算法及其计算。

7.从源点到其余各顶点的最短路径的算法及其计算。

8.各对顶点的最短路径的算法及其计算。

第九章查找1.顺序表的查找算法及其算法实现ASL计算。

2.有序表的查找算法及其算法实现。

ASL计算3.二叉排序树的定义,特点,构造及其查找算法的实现ASL 计算。

4.B-树的定义,插入,删除,构造。

5.哈希函数,哈希冲突的定义。

构造哈希函数的方法,解决冲突的方法。

6.给出哈希函数,哈希冲突的解决方法,构造哈希表ASL计算。

《复习提纲数据结构》课件

《复习提纲数据结构》课件

数据结构组成
数据结构由数据元素和它们之间的 关系组成,这些关系决定了数据元 素之间的逻辑关系。
数据结构分类
数据结构可以根据不同的分类标准 进行分类,如线性结构和非线性结 构、静态结构和动态结构等。
数据结构的重要性
01
02
03
提高数据处理效率
合理的数据结构能够提高 数据处理的速度和效率, 使得数据处理更加高效。
图的应用
图在计算机科学中有着广泛的应用, 如社交网络、路由算法、搜索引擎等 。
哈希表
哈希表的概念
哈希表是一种通过哈希函数将键映射到 桶中的数据结构,用于快速查找和存储
键值对。
哈希冲突的处理
当两个不同的键被映射到同一个桶时 ,会发生哈希冲突。常见的处理方式
有链地址法和开放地址法。
哈希表的性能分析
哈希表的查找、插入、删除等操作的 时间复杂度主要由哈希函数的设计和 哈希表的负载因子决定。
链式插入
在链式存储结构中,插入操作需要定位到插入位置的节点 ,并在其后插入新节点,同时修改指针。
AVL树的插入
在AVL树中,插入操作需要先找到合适的空位,然后将新 节点插入到该位置,并调整树的结构以保持平衡。
删除操作
顺序删除
在顺序存储结构的线性表中,删除操作需要定位到要删除的元素,然 后将其后一位元素覆盖到要删除的位置,并减少数组长度。
06
数据结构性能分析
时间复杂度分析
时间复杂度概念
时间复杂度是衡量算法执行时间随输入规模 增长而增长的量度,通常用大O表示法表示 。
时间复杂度分类
根据算法的时间复杂度,可以将算法分为线性时间 复杂度、多项式时间复杂度和指数时间复杂度。
时间复杂度分析方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构复习提纲第二部分复习提纲(不分题型)1.数据的三个层次是数据、数据元素和数据项。

2.四种基本存储方式的特点?什么时候逻辑关系可以由存储地址表示?什么时候由指针表示?什么时候存储地址与结点内容有关系?答:◆顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。

由此得到的存储表示称为顺序存储结构。

◆链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。

由此得到的存储表示称为链式存储结构。

◆索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。

◆散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。

3.四种基本逻辑结构是什么?逻辑结构与存储结构是否一一对应?逻辑结构与计算机是否有关?逻辑结构:答:4.运算、算法含义?谁定义在存储结构上?谁定义在逻辑结构上?答:运算是在数据逻辑结构上定义的操作算法。

所谓算法(Algorithm)是对问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。

所谓算法复杂度:T (n) = O(f(n))称T (n) 为算法的渐近时间复杂度(Asymptotic Time Complexity),简称时间复杂度。

O是数量级的符号。

下面我们探讨一下如何估算算法的时间复杂度算法= 控制结构+ 原操作(固有数据类型的操作)算法的执行时间=原操作(i)的执行次数×原操作(i)的执行时间算法的执行时间与原操作执行次数之和成正比5.运算可分为加工型和___。

5.数据结构一般包括三个方面内容:逻辑结构、储存结构和运算。

6.算法的复杂性与计算机是否有关?7.算法正确与否一般是用理论证明还是用算例检验?答:用算例须考虑所有情况,用理论需要严谨的数学证明。

9.时间复杂性一般考虑平均时间复杂性和最坏时间复杂性。

10.程序设计的实质是______和______。

11.将2100、log2n、nlog2n、n n、n2、2n、n!等按增长率从低到高排列是______。

答:2100<log2n< nlog2n< n2<2n< n!< n n1.线性表每个结点都有一个前趋和后继吗?答:开始结点只有一个后继,终端结点只有一个前趋。

2.头结点有何作用?3.链表结点的物理地址一定不连续吗?-连续与否都可4.单链表插入、删除结点的一般过程?(指针修改情况)如果插入在链表开头:New NewNode; NewNode->Next=Pointer; HEAD->Next=NewNode;如果插入在链表中间:NewNode->Next=Pointer->Next; Pointer->Next=NewNode;如果插入在链表末端:NewNode->Next=Pointer->Next; Pointer->Next=NewNode;如果删除在链表开头: Head->Next=Pointer->Next; free(Pointer);如果删除在链表中间: Back-〉Next=Pointer-〉Next; free(Pointer);如果删除在链表末端: Back-〉Next=Pointer-〉Next; free(Pointer);5.顺序表、单链表优点缺点?是否可以(按值、按序号)随机存取?顺序存取?答:链表的优点是空间动态分配,插入和删除时不需要移动数据,缺点是不能随机访问。

顺序表的优点是能熟记存取数据元素可以按值随机存储,存取速度快,缺点:插入、删除操作需移动数据。

6.顺序表插入、删除时是否总引起结点的移动?答:只有插入、删除在表末,不会引起结点的移动。

7.分别对有头结点、无头结点的循环、非循环单链表,如何判断为空?如何判断某结点为尾结点?8.循环链表主要优点?用尾指针表示循环单链表有什么好处?答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next 和rear, 查找时间都是O(1)。

若用头指针来表示该链表,则查找终端结点的时间为O(n)。

9.何为储存密度?10.例,输出无头结点的单链表中所有奇数。

解:设链表类型定义如下:typedef int datatype; //结点数据类型,假设为inttypedef struct node * pointer; //一般结点指针类型struct node { //结点结构datatype data;pointer next;};typedef pointer lklist; //头指针类型void disp(lklist L) {pointer p;p=L;while(p!=NULL) {if(p->data%2==1) cout<<p->data<<endl;p=p->next;}}11.例,判断无头结点的链表中结点是否构成等差数列。

解:链表类型定义同上题。

int detect(lklist L) {pointer p,q; //以下用q表示p的前趋datatype x;q=L;if(q==NULL) return 1; //链表为空p=q->next;if(p==NULL) return 1; //链表只有1个结点x=p->data-q->data; //初始结点差while(p->next!=NULL) {q=p;p=p->next;if(p->data-q->data!=x) return 0; //不满足等差关系}return 1;}12.例,删除无头结点的链表中的第i个结点。

解:链表类型定义同上题。

void delete(lklist L,int i) {int k=0;pointer p=L,q;while(k!=i-1) { //找第i-1个结点p=p->next;k++;}q=p->next;p->next=q->next;delete q;}13.例,在无头结点的链表中的第i个结点前插入数据x。

解:链表类型定义同上题。

void insert(lklist L,int I,datatyoe x) {int k=0;pointer p=L,q;while(k!=i-1) { //找第i-1个结点p=p->next;k++;}q=new node;q->data=x;q->next=p->next;p->next=q;}1.何为假上溢?如何克服?2.循环队列如何实现?3.何为栈、队列?两者共同特点?答:栈是限定仅在表为进行插入或删除操作的线性表。

队列是一种先进先出的线性表。

在数据结构上是相同的。

4.链队列、链栈是否都有必要设置头结点?有没有上溢、下溢、假溢出问题?5.例:三个点ABC依次进栈(在进栈的中间可能有出栈)。

问ABC、BCA、CAB能否是可能的出栈序列?解:按先进后出的原则分析,ABC可行:即A进A出、B进B出、C进C出;BCA可行:即A进不出,B进B出、C进C出、A出;CAB不行:C出后,栈内有BA,应B先出。

6.循环队列A[m]中,已知头指针、尾指针与元素个数中的任意两个,求另一个?len=(rear-front+m)%m;rear=(front+len)%m;front=(rear-len+m)%m;7.循环队列A[m]空、满的条件?空:rear=front满:front=(rear+1)%m;8.串、长度、子串、相等、子串定位等的概念;答:串中字符的数目n称为串的长度。

0个字符的串成为空串,它的长度为0。

串的串连是将一个串紧接着存放在另一个串的后面而成的一个新串。

串的连接满足结合率,不满足交换率串的模式匹配问题:子串的定位操作通常称为串的模式匹配。

通常思想是从主串S的第pos个字符起和模式的第一个字符比较,若相等则继续逐个比较后继字符,否则从主串的下一个字符起再重新和模式的字符比较。

依此类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,函数值为和模式T中第一个字符相等的字符在主串S中的序号,否则称模式不匹配,函数值为0。

1.一维数组是否是顺序表?数组元素地址的计算?答:是,2.多维数组的两种储存方式?C数组用哪一种?答:以行序位主序的存储方式和与列序为主的存储方式。

C数组用以行序为主。

3.三元组含义?一般矩阵按三元组存储能否节省空间?答:三元组表表示法:每一个非0元素对于一个三元组(row,col,val),row为非0元素的行下标,col 为非0元素的列下标,val为非0元素的值。

显然,有N个非0元素的,只需要3N个存储单元。

4.何为稀疏矩阵、特殊矩阵?为什么要对矩阵压缩存储?答:稀疏矩阵:对于m*n的矩阵A中若有N个非0元,若N<<m*n,则可称A为稀疏矩阵。

特殊矩阵(1):对称矩阵由于对称性,只需存储上三角或下三角部分,如按行优先顺序存储对称矩阵A,则等价于压缩在一个一维数组B中。

LOC[a ij]=LOC[B[k]]=LOC(a11)+(k-1)*L特殊矩阵(2):上(下)三角矩阵以下三角为例,既当i<j时,a ij=0。

其压缩思路同对称矩阵。

LOC[a ij]=LOC(a11)+(k-1)*L矩阵压缩的原因:在数值分析中经常出现一些阶数很高的矩阵,同时在矩阵中有许多值相同的元素或者是0元素。

有时为了节省存储空间,可以对这类矩阵进行压缩储存。

1.二叉树顺序存储后逻辑关系通过什么表示?答:顺序存储结构:按照顺序存储结构的定义,在此约定,用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上的编号为i的结点元素存储在如上定义的一维数组中下标为i-1的分量中。

2.何时用树结构?树是否只能用链式存储?解:表示具有分支和层次关系的数据时用树。

二叉树等特殊情况可用顺序存储。

3.已知二叉树的深度k,则其结点数范围?已知二叉树的结点数,则其深度k范围?4.只有3个结点的二叉排序树有几种形态?解:有5种,见下图所示。

5.完全二叉树有6个叶子,则结点总数就是11吗?解:已知叶子数的完全二叉树一般有两棵,结点数差1,见下图:AB CD E F G H I J KAB CD E F G H I J K L一般,结点数n=n0+n1+n2,而n0=n2+1(二叉树性质),所以n=2n0-1+n1。

相关文档
最新文档