比较顺序存储结构和链式存储结构 - 副本

合集下载

数据结构复习题及答案

数据结构复习题及答案

中南大学现代远程教育课程考试(考试)复习题及参考答案数据结构(使用教材:余腊生编著,人民邮电出版社出版,《数据结构—基于C++模板类的实现》一、判断题1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

[ ] 2.链式存储在插人和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。

[ ]3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。

[ ] 4.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。

[ ] 5.一个广义表的表尾总是一个广义表。

[ ] 6.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。

[ ] 7.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。

[ ] 8.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

[ ] 9.直接选择排序是一种稳定的排序方法。

[ ] 10.30、闭散列法通常比开散列法时间效率更高。

[ ] 11.有n个结点的不同的二叉树有n!棵。

[ ] 12.直接选择排序是一种不稳定的排序方法。

[ ] 13.在2048个互不相同的关键码中选择最小的5个关键码,用堆排序比用锦标赛排序更快。

[ ] 14.当3阶B_树中有255个关键码时,其最大高度(包括失败结点层)不超过8。

[ ] 15.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。

[ ] 16.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。

在设计再散列函数时,要求计算出的值与表的大小m互质。

[ ] 17.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。

[ ] 18.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。

线性表 知识点总结

线性表 知识点总结

线性表知识点总结线性表的特点:1. 有序性:线性表中的元素是有序排列的,每个元素都有唯一的前驱和后继。

2. 可变性:线性表的长度是可变的,可以进行插入、删除操作来改变表的元素数量。

3. 线性关系:线性表中的元素之间存在明确的前驱和后继关系。

4. 存储结构:线性表的存储结构有顺序存储和链式存储两种方式。

线性表的操作:1. 查找操作:根据元素的位置或值来查找线性表中的元素。

2. 插入操作:将一个新元素插入到线性表中的指定位置。

3. 删除操作:将线性表中的某个元素删除。

4. 更新操作:将线性表中的某个元素更新为新的值。

线性表的顺序存储结构:顺序存储结构是将线性表的元素按照其逻辑顺序依次存储在一块连续的存储空间中。

线性表的顺序存储结构通常采用数组来实现。

数组中的每个元素都可以通过下标来访问,因此可以快速的进行查找操作。

但是插入和删除操作会导致元素位置的变动,需要进行大量数据搬移,效率较低。

线性表的链式存储结构:链式存储结构是将线性表的元素通过指针相连,形成一个链式结构。

每个元素包含数据和指向下一个元素的指针。

链式存储结构不需要连续的存储空间,可以动态分配内存,适合插入和删除频繁的场景。

但是链式结构的元素访问不如顺序结构高效,需要通过指针来逐个访问元素。

线性表的应用场景:1. 线性表适用于数据元素之间存在明确的前后关系,有序排列的场景。

2. 顺序存储结构适用于元素的插入和删除操作较少,对元素的随机访问较频繁的场景。

3. 链式存储结构适用于插入和删除操作较频繁的场景,对元素的随机访问较少。

线性表的操作的时间复杂度:1. 查找操作:顺序存储结构的时间复杂度为O(1),链式存储结构的时间复杂度为O(n)。

2. 插入和删除操作:顺序存储结构的时间复杂度为O(n),链式存储结构的时间复杂度为O(1)。

线性表的实现:1. 顺序存储结构的实现:使用数组来存储元素,通过下标来访问元素。

2. 链式存储结构的实现:使用链表来实现,每个元素包含数据和指向下一个元素的指针。

国家二级ACCESS机试选择题(公共基础知识)模拟试卷2(题后含答案及解析)

国家二级ACCESS机试选择题(公共基础知识)模拟试卷2(题后含答案及解析)

国家二级ACCESS机试选择题(公共基础知识)模拟试卷2(题后含答案及解析)题型有:1. 选择题选择题1.下列叙述中正确的是( )。

A.所谓算法就是计算方法B.程序可以作为算法的一种描述方法C.算法设计只需考虑得到计算结果D.算法设计可以忽略算法的运算时间正确答案:B解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序。

算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果。

算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的。

算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法。

知识模块:公共基础知识2.下列叙述中正确的是( )。

A.算法的复杂度包括时间复杂度与空间复杂度B.算法的复杂度是指算法控制结构的复杂程度C.算法的复杂度是指算法程序中指令的数量D.算法的复杂度是指算法所处理的数据量正确答案:A解析:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。

算法的复杂度包括时间复杂度与空间复杂度。

算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指算法在执行过程中所需要的内存空间。

知识模块:公共基础知识3.下列叙述中正确的是( )。

A.算法的时间复杂度与计算机的运行速度有关B.算法的时间复杂度与运行算法时特定的输入有关C.算法的时间复杂度与算法程序中的语句条数成正比D.算法的时间复杂度与算法程序编制者的水平有关正确答案:B解析:为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。

为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。

算法所执行的基本运算次数还与问题的规模有关;对应一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。

蜂考数据结构答案

蜂考数据结构答案

蜂考数据结构答案1.什么是数据结构?数据结构是计算机存储、组织数据的方式。

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

结构包括逻辑结构和物理结构。

数据的逻辑结构包括4种(1)集合:数据元素之间除了有相同的数据类型再没有其他的关系(2)线性结构:数据元素之间是一对一的关系——线性表、栈、队列(3)树形结构:数据元素之间是一对多的关系(4)图状结构:数据元素之间是多对多的关系。

物理结构包括顺序存储结构和链式存储结构。

2.解释一下顺序存储与链式存储顺序存储结构是用一段连续的存储空间来存储数据元素,可以进行随机访问,访问效率较高。

链式存储结构是用任意的存储空间来存储数据元素,不可以进行随机访问,访问效率较低。

3.头指针和头结点的区别?头指针:是指向第一个节点存储位置的指针,具有标识作用,头指针是链表的必要元素,无论链表是否为空,头指针都存在。

头结点:是放在第一个元素节点之前,便于在第一个元素节点之前进行插入和删除的操作,头结点不是链表的必须元素,可有可无,头结点的数据域也可以不存储任何信息。

4.线性结构的特点(1)集合中必存在唯一的一个"第一个元素";(2)集合中必存在唯一的一个"最后的元素";(3)除最后元素之外,其它数据元素均有唯一的"后继";(4)除第一元素之外,其它数据元素均有唯一的"前驱"。

5.数组和链表的区别?从逻辑结构来看:数组的存储长度是固定的,它不能适应数据动态增减的情况。

链表能够动态分配存储空间以适应数据动态增减的情况,并且易于进行插入和删除操作。

从访问方式来看:数组在内存中是一片连续的存储空间,可以通过数组下标对数组进行随机访问,访问效率较高。

链表是链式存储结构,存储空间不是必须连续的,可以是任意的,访问必须从前往后依次进行,访问效率较数组来说比较低。

如果从第i个位置插入多个元素,对于数组来说每一次插入都需要往后移动元素,每一次的时间复杂度都是O(n),而单链表来说只需要在第一次寻找i的位置时时间复杂度为O(n),其余的插入和删除操作时间复杂度均为O(1),提高了插入和删除的效率。

数据的逻辑结构和存储结构的关系

数据的逻辑结构和存储结构的关系

数据的逻辑结构和存储结构的关系数据的逻辑结构和存储结构是计算机科学中的两个重要概念,它们之间存在着密切的关系。

本文将从数据的定义、逻辑结构和存储结构的概念入手,探讨它们之间的联系和作用。

一、数据的定义数据是指在计算机中可以被处理和操作的信息,它可以是数字、文字、图像、声音等形式。

数据是计算机科学中最基本的概念,所有的计算机应用都离不开数据的处理。

二、逻辑结构的概念逻辑结构是指数据元素之间的逻辑关系,它是对数据元素之间关系的抽象描述。

逻辑结构分为线性结构、树形结构、图形结构等几种类型。

线性结构是指数据元素之间是一对一的关系,如线性表、栈、队列等;树形结构是指数据元素之间是一对多的关系,如二叉树、多叉树等;图形结构是指数据元素之间是多对多的关系,如图。

三、存储结构的概念存储结构是指数据在计算机中的存储方式,它是对数据的物理存储结构的描述。

存储结构分为顺序存储结构和链式存储结构两种类型。

顺序存储结构是指数据元素在计算机中的存储是连续的,如数组;链式存储结构是指数据元素在计算机中的存储是不连续的,通过指针来实现数据元素的链接,如链表。

四、逻辑结构和存储结构的关系逻辑结构和存储结构之间存在着密切的关系,它们之间的联系主要体现在以下几个方面。

1.逻辑结构决定了存储结构逻辑结构是对数据元素之间关系的描述,它决定了数据元素在计算机中的存储方式。

不同的逻辑结构需要不同的存储方式来实现。

比如,线性结构可以采用数组来实现顺序存储结构,也可以采用链表来实现链式存储结构。

2.存储结构影响了数据的处理效率存储结构对数据的处理效率有很大的影响,不同的存储结构对数据的处理效率也不同。

比如,数组的存储结构可以实现随机访问,对于查找操作效率很高;而链表的存储结构只能通过指针来访问,对于查找操作效率较低,但对于插入和删除操作效率较高。

3.逻辑结构和存储结构的选择需要根据实际应用场景来确定在实际应用中,需要根据数据的处理需求和计算机的硬件条件来选择适合的逻辑结构和存储结构。

数据结构中几种存储结构的比较

数据结构中几种存储结构的比较
通常关键码的集合比函数值的集合大得多因而经过函数变换后可能将不同的关键码映射到同一个地址上这种现象称为冲突再采用某一种方式来将存在冲突的数据存放到给定存储单元的空闲位置上的一种存储方式为散列存储结构
维普资讯
第 2 8卷 第 4期 20 0 6年 1 2月
2 . 1顺序存储结构 组,则第一组中的最大值为 3 , l 第二组中的 5 最大值为 6 , 2 第三组中最小值 这是一种最简单的存储结构 。顺序存储 最小值为 3 、 结构是假设有一个足够大的连续的存储空间, 为 7 、 1 最人值为 8 , 以组与组之间是从小 8所 即将 则可将数据按现实中数据的逻辑关系存储在 到 大有序 的。由此便有 了索 引存 储结 构 , 计算机的存储器中, 达到所存 即所见。 因为内 查找表按块分成若干个子表 ,对每个 子表建 存中的地址空间是线性的, 因此, 用物理上 的 立一个索引项, 再将这些索引项顺序存储, 形
中图分类号: TP 1 31 文献标识码 I n
众所周知 ,计算机 的程序是对数据进行 相邻实现数据元素之间的逻辑关系是既简单, D_处理 , HI - : 在对 数据 进行 加工 处理 之前 , 先 又 自然 的。 首 我们要将数据存储在计算机里 。在大 多数情 22 链 式存储 结构 . 况下, 这些 数据 并不 是没有 组 织 、 杂乱 无章 地 链式 存储 结 构 是通 过 一 组 任 意 的存 储 单 存 储在计 算机 的存储器 中。 么 , 那 在计 算机 里 元来 存 储各 数 据 元素 的 ,而 这 一组存 储 单元 到底是如何存储数据的呢?有哪些存储方式 , 可以是连续 的也可以是不连续的,那么怎样 . . 这些存储方式之 间有什么不同?下面就这儿 表示 出数据元素之间的逻辑关系呢 ?为建立 个 问题 进行 论述 : 起数据元素之间的逻辑关系,对任一数据元 1存储结构综述 素a ,除了存放数据元素 的自身的信息 a之 数据的存储结构 是为程序所涉及 的数据 外, 还需要存放与 a有关系的其它元素所在 选 择一 种存储 形式 ,并将 其存 储 到 计算机 中 , 存储 单 元 的地 址 ,我们 形 象 地 称地 址 为 找剑 这样就得到了相应数据在 内存中的存储方式 其它数据元素的链 ,所 以这种存储方式就称 即存储结构 , 义可 以称为数据的物理结构 。 程 为链式存储结构。 序 设计 的 实现程 序 的 时 间性 能 及 空 间性 能都 2 索引存储结构 . 3 依赖 于数据的存储结构,所 以在程序 设计之 这种存储结构主要是为 了方便查找。若 前我们要综合各方面的情况选择一种合适的、 要从一组数据 中查找某一个数据,而这组数 高效 率 的存 储 结构 。 据 也就 是 查找 表中 的数 据 整 体 是无 序 的但 按 2 存储结构分类 块 是有序 的, : 如 数据结构在计算机中有 四种不 同的存储 囵圆囵 园回国国目园目园园圃国园 结构: 顺序存储结构 、 链式存储结构、 索引存 1 2 3 4 5 6 8 9 01 21 41 7 1 11 31 5 储结构和散列存储结构四类 。 这组数据整体是无序 的, 但若每 5 分成一 个

数据结构C语言

数据结构C语言

数据结构(C语言)数据组织(数据、数据元素、数据项)的三个层次:数据可由若干个数据元素构成,而数据元素又可以由一个或若干个数据项组成。

四种基本的数据结构:集合、线性结构、树形结构、图状结构。

顺序存储的特点是在内存中开辟一组连续的空间来存放数据,数据元素之间的逻辑关系通过元素在内存中存放的相对位置来确定。

链式存储的特点是通过指针反映数据元素之间的逻辑关系。

数据类型:原子类型、结构类型。

线性表定义:线性表是n个数据元素的有限序列。

线性表的顺序存储结构:表中相邻的元素a和b所对应的存储地址A和B 也是相邻的。

(也就是数据都是按照表中情况进行连续存储的情况)线性表的链式存储结构:该线性表中的数据元素可以用任意的存储单元来存储。

表中的各个相邻的数据(元素)是通过一个指针地址来进行链接的,以找到下一个数据(元素)在哪。

其形式一般为:数据地址线性表的顺序和链式存储结构的比较:在线性表的长度变化比较大,预先难以确定的情况下,最好采用动态链表作为存储结构。

当线性表的长度变化不大时,采用顺序存储结构比较节省存储空间。

在顺序表结构的线性表上主要进行查找、读取而很少做插入和删除的操作。

链式结构的线性表中比较适应做插入和删除的操作。

一元多项式的加减法运算可先将一元多项式进行了改变存储之后再进行运算比较适宜,将一元多项式转换为用在内存中的前一项表示阶数,后一项表示对应该阶数的系数。

然后利用这种形式进行加减运算。

栈和队列栈是限定在表的同一端进行插入或删除操作的线性表,即进栈、出栈。

(特殊的线性表)栈的顺序存储结构:利用一组地址连续的存储单元依次从栈底到栈顶存放数据元素,栈底位置固定不变,可将栈底设在向量低下标的一端。

栈的链式存储结构:用单链表作为存储结构的栈称为链栈,链表的最后一个结点表示栈底,第一个结点表示栈顶。

队列也是一种特殊的线性表。

它所有的插入操作均限定在表的一端进行,而所有的删除操作则限定在表的另一端进行。

允许删除元素的一端称为队头,允许插入元素的一端称为队尾,删除元素称为出队,插入元素称为进队。

c语言数据结构期末考试试题及答案

c语言数据结构期末考试试题及答案

c语言数据结构期末考试试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。

A. 执行算法所需要的计算量B. 执行算法所需要的存储空间C. 执行算法所需要的时间D. 执行算法所需要的内存大小答案:A2. 线性表的顺序存储结构和链式存储结构相比,其优点是()。

A. 存储密度高B. 存储密度低C. 存储空间少D. 存储空间多答案:A3. 在一个单链表中,若头节点不包含数据,其头节点的作用是()。

A. 存储数据B. 存储空指针C. 存储尾节点的指针D. 存储首元素的指针答案:D4. 一个算法的空间复杂度是指()。

A. 执行算法所需要的计算量B. 执行算法所需要的存储空间C. 执行算法所需要的时间D. 执行算法所需要的内存大小答案:B5. 栈的特点是()。

A. 先进先出B. 后进先出C. 随机进先出D. 随机进后出答案:B6. 以下哪个数据结构是动态的()。

A. 数组B. 链表C. 栈D. 队列答案:B7. 在二叉树的遍历中,先序遍历的顺序是()。

A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A8. 哈希表解决冲突的方法不包括()。

A. 开放定址法B. 链地址法C. 线性探测法D. 二分查找法答案:D9. 以下哪种排序算法的时间复杂度为O(nlogn)()。

A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序答案:B10. 以下哪个不是图的遍历算法()。

A. 深度优先搜索B. 广度优先搜索C. 回溯D. 归并排序答案:D二、填空题(每题2分,共20分)1. 在C语言中,动态分配内存的函数是___________。

答案:malloc2. 线性表的两种存储结构是顺序存储结构和___________。

答案:链式存储结构3. 栈的基本操作包括入栈和___________。

答案:出栈4. 在二叉树中,度为2的节点称为___________。

答案:分支节点5. 哈希表中,解决冲突的方法之一是___________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?
答:① 顺序存储时,相邻数据元素的存放地址也相邻;内存中可用存储单元的地址必须是连续的。优点:存储密度
大(=1),存储空间利用率高。缺点:插入或删除元素时不方便。
②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点
间关系的指针. 优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(<1),存储空间利用率低。
顺序表适宜于做查找这样的静态操作;链表宜于做插入,删除这样的动态操作。
若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;
若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。

顺序表与链表的比较
基于空间的比较-存储分配方式:顺序表的存储空间是静态分配的;链表的存储空间是动态分配的
存储密度 = 结点数据本身所占的存储量/结点结构所占的存储总量:顺序表的存储密度 = 1;链表的
存储密度 < 1

基于时间的比较
存取方式:顺序表可以随机存取,也可以顺序存取;链表是顺序存取的;插入/删除时移动元素个数;
顺序表平均需要移动近一半元素;链表不需要移动元素,只需要修改指针

顺序表和链表的比较
顺序表和链表各有短长。在实际应用中究竟选用哪一种存储结构呢?这要根据具体问题的要求和性质来决定。
通常有以下几方面的考虑:
┌───┬───────────────┬───────────────┐
│ │ 顺序表 │ 链表 │
├─┬─┼───────────────┼───────────────┤
│基│分│静态分配。程序执行之前必须明确规 │动态分配只要内存空间尚有空闲,│
│于│配│定存储规模。若线性表长度n变 │就不会产生溢出。因此,当线性表│
│空│方│化较大,则存储规模难于预先确定 │的长度变化较大,难以估计其存储│
│间│式│估计过大将造成空间浪费,估计太 │规模时,以采用动态链表作为存储│
│考│ │小又将使空间溢出机会增多。 │结构为好。 │
│虑├─┼───────────────┼───────────────┤

│ │存│为1。当线性表的长度变化不大 ,│<1 │
│ │储│易于事先确定其大小时,为了节约 │ │
│ │密│存储空间,宜采用顺序表作为存储 │ │
│ │度│结构。 │ │
├─┼─┼───────────────┼───────────────┤
│基│存│随机存取结构,对表中任一结点都│顺序存取结构,链表中的结点,需│

│于│取│可在O(1)时间内直接取得 │从头指针起顺着链扫描才能取得。│
│时│方│线性表的操作主要是进行查找,很 │ │
│间│法│少做插入和删除操作时,采用顺序 │ │
│考│ │表做存储结构为宜。 │ │
│虑├─┼───────────────┼───────────────┤
│ │插│在顺序表中进行插入和删除,平均 │在链表中的任何位置上进行插入和│
│ │入│要移动表中近一半的结点,尤其是 │删除,都只需要修改指针。对于频│
│ │删│当每个结点的信息量较大时,移动 │繁进行插入和删除的线性表,宜采│
│ │除│结点的时间开销就相当可观。 │用链表做存储结构。若表的插入和│
│ │操│ │删除主要发生在表的首尾两端,则│
│ │作│ │采用尾指针表示的单循环链表为宜│

为什么在单循环链表中设置尾指针比设置头指针更好?
答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设
一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next 和 rear, 查找时
间都是O(1)。 若用头指针来表示该链表,则查找终端结点的时间为O(n)。
在链表中设置头结点有什么好处?

头结点即在链表的首元结点之前附设的一个结点,该结点的数据域可以为空,也可存放表长度等附加信息,其作用
是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便。

1.队列先进先出,栈先进后出。
2.对插入和删除操作的"限定"。 栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在
表的一端进行插入和在另一端进行删除操作的线性表。 从"数据结构"的角度看,它们都是线性结构,即数据元
素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除
操作的"限定"。 栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,
栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删
除操作受更多的约束和限定,故又称为限定性的线性表结构。

3.遍历数据速度不同。栈只能从头部取数据 也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时
候还得为数据开辟临时空间,保持数据在遍历前的一致性队列怎不同,他基于地址指针进行遍历,而且可以从头或
尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多

栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。
队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它
们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。

栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先
出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约
束和限定,故又称为限定性的线性表结构。

递归算法的优缺点: 优点:递归过程结构清晰;程序易读;正确性容易证明
缺点:时间效率低; 空间开销大; 算法不容易优化
递归算法转换为非递归算法:采用迭代算法;尾递归的消除;利用栈消除任何递归
循环队列: 队列存放数组被当作首尾相接的表处理。
队头、队尾指针加1时从maxSize-1直接进到0,可用语言的取模(余数)运算实现。
队头指针进1: front = (front+1) % maxSize; 队尾指针进1: rear = (rear+1) % maxSize;
队列初始化:front = rear = 0; 队空:front == rear; 队满:(rear+1) % maxSize == front

相关文档
最新文档