数据结构复习题

合集下载

数据结构复习习题和答案(DOC)

数据结构复习习题和答案(DOC)

第一章绪论一、单项选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和操作等的学科。

① A.操作对象 B.计算方法 C·逻辑存储 D.数据映象② A.结构 B.关系 C.运算. D.算法2.数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

① A.算法 B.数据元素 C.数据操作 D.逻辑结构② A.操作 B.映象 C、存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构4·算法分析的目的是①,算法分析的两个主要方面是②。

① A. 找出数据结构的合理性 B.研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性5.计算机算法指的是①,它必具备输入、输出和②等五个特性。

① A. 计算方法 B.排序方法 C. 解决问题的有限运算序列 D.调度方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性 D.易读性、稳定性和安全性6. 线性表的逻辑顺序与存储顺序总是一致的,这种说法()。

A. 正确 B.不正确7. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A. 必须是连续的 B.部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以8.数据结构通常是研究数据的()及它们之间的相互联系。

A.存储和逻辑结构 B.存储和抽象C.理想与抽象 D.理想与逻辑9.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为()。

A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构11.非线性结构是数据元素之间存在一种()。

数据结构各章复习题

数据结构各章复习题

计算机学院 甘士成
Copyright © 1992 - 2012 Gane Cheng . All Rights Reserved .
1 / 54
5. 下面说法错误的是(

(1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模 n 下,复杂度 O(n)的算法在时间上总是优于复杂度 O(2 )的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3)
(p^.rlink)^.llink:=p^.llink; (p^.llink)^.rlink:=p; p^.rlink:=(p^.rlink)^.rlink p^.llink:=(p^.rlink)^.rlink;
三、简答题
1.线性表有两种存储结构:一是顺序表,二是链表。试问: (1)如果有 n 个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在 此情况下,应选用哪种存储结构? 为什么?
计算机学院 甘士成
(B)部分地址必须是连续的
Copyright © 1992 - 2012 Gane Cheng . All Rights Reserved . 3 / 54
(C)一定是不连续的 ( B )7. 线性表L在
(D)连续或不连续都可以 情况下适用于使用链式结构实现。 (B)需不断对L进行删除插入 (D)L中结点结构复杂

A )3. 在 n 个结点的顺序表中,算法的时间复杂度是 O(1)的操作是: (A) 访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n) (B) 在第 i 个结点后插入一个新结点(1≤i≤n) (C) 删除第 i 个结点(1≤i≤n) (D) 将 n 个结点从小到大排序

数据结构复习题及答案5篇

数据结构复习题及答案5篇

数据结构复习题及答案5篇第一篇:数据结构复习题及答案、数据结构复习题及答案中南大学现代远程教育课程考试(专科)复习题及参考答案数据结构一、判断题:1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

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

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

()4.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。

()5.如果两个串含有相同的字符,则这两个串相等。

()6.数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。

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

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

()9.一个广义表的表尾总是一个广义表。

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

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

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

()13.直接选择排序是一种稳定的排序方法。

()14.闭散列法通常比开散列法时间效率更高。

()15.有n个结点的不同的二叉树有n!棵。

()16.直接选择排序是一种不稳定的排序方法。

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

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

()19.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。

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

《数据结构》复习题

《数据结构》复习题

《数据结构》复习题一.选择题:1.数据结构是研究数据的( ) 以及它们之间的相互关系A.理想结构,物理结构B.理想结构,抽象结构C.物理结构,逻辑结构D.抽象结构,逻辑结构2. 组成数据的基本单位是()A.数据项B.数据类型C. 数据元素D. 数据变量3. 如果某数据结构的数据元素的集合为S={A,B,C,D,E,F,G},元素之间的关系为R={<A,D>,<A,G>,<D,B>,<D,C>,<G,E>,<G,F>},则该数据结构是一种()A.线性结构B. 树结构C. 图结构D. 链表结构4. 线性表的链接实现有利于( ) 运算A.插入B.读表元C.查找D.定位5. 设一数列的输入顺序为1,2,3,4,5,6通过栈操作不可能排成的输出序列为()A. 3,2,5,6,4,1B. 1,5,4,6,2,3C. 2,4,3,5,1,6D. 4,5,3,6,2,16. 设字符串S1=‘ABCDEFG’,S2=‘PQRST’则运算S=Concat(Sub(S1,2,Length(S2)),Sub(S1,Length(S2),2))后结果为()A.‘BCQR’B.‘BCDEF’C.‘BCDEFG’D.‘BCDEFEF’7. 设单链表中指针P指向结点A,若要删除A之后的结点(若存在),则修改指针的操作为()A. p→next= p→next→nextB. p= p→nextC. p= p→next→nextD. p→next = p8. 线性表采用链式存储时,其地址()A. 必须是连续的B.部分地址必须是连续的C. 一定是不连续的D.连续与否均可以9. 在内部排序时,排序不稳定的有()A.插入排序B. 冒泡排序C. 快速排序D.归并排序10. 设有1000个元素,用折半法查找时,最小比较次数为()A.0B. 1C.10D. 50011. 将一个元素进入队列的时间复杂度是()n)A. O (1)B. O (n)C. O (n2)D. O (log212. 在一个具有n个结点的单链表中查找其值等x的结点,在查找成功的情况下,需要比较()个元素结点A. n/2B. nC. (n+1)/2D. (n-1)/213. 从一个长度为n的顺序表中删除第i个元素(1≤i≤n),需向前移动()个元素A. n-iB. n-i+1C. n-i-1D. i14. 总共3层的完全二叉树,其结点数至少有()A.3B. 4C.7D.815. 队列操作的原则是()A. 先进先出B.后进先出C. 只能进行插入D. 只能进行删除16. 若线性表最常用的操作是存取第i个元素及其前驱元素的值,则采用()存储方式最节省时间A.单链表B. 双向链表C. 音循环链表D. 顺序表17. 栈和队列都是()A. 顺序存储的线性结构B. 限制存取点的线性结构C. 链接存储的线性结构D. 限制存取点的非线性结构18. 与线性表的链接存储相符的特性是()A.插入和删除操作灵活B. 需要连续存储空间C. 便于随机访问D. 存储密度大19.若进队序列为1,2,3,则出队序列是()A.3,2,1B. 1,3,2C. 1,2,3D. 3,2,120. 在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是()A. p= NULLB. p→next= NULLC. p=hD. p→next= h3. 在双向循环链表中,在指针P所指的结点之后插入指针f所指的结点,其操作为。

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)⼀、算法设计题(每题15分,共60分)答题要求:①⽤⾃然语⾔说明所采⽤算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。

1、有⼀个带头结点的单链表,每个结点包括两个域,⼀个是整型域info,另⼀个是指向下⼀个结点的指针域next。

假设单链表已建⽴,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留⼀个。

3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个⼈按顺时针⽅向围坐成⼀圈,现从第s个⼈开始按顺时针⽅向报数,数到第m个⼈出列,然后从出列的下⼀个⼈重新开始报数,数到第m的⼈⼜出列,…,如此重复直到所有的⼈全部出列为⽌。

现要求采⽤循环链表结构设计⼀个算法,模拟此过程。

4、编程实现单链表的就地逆置。

23.在数组 A[1..n]中有n个数据,试建⽴⼀个带有头结点的循环链表,头指针为h,要求链中数据从⼩到⼤排列,重复的数据在链中只保存⼀个.5、设计⼀个尽可能的⾼效算法输出单链表的倒数第K个元素。

3、假设以I和O分别表⽰⼊栈和出栈操作。

栈的初态和终态均为空,⼊栈和出栈的操作序列可表⽰为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为⾮法序列。

(15分)(1)下⾯所⽰的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出⼀个算法,判定所给的操作序列是否合法。

若合法,返回true,否则返回false(假定被判定的操作序列已存⼊⼀维数组中)。

5、设从键盘输⼊⼀整数的序列:a1, a2, a3,…,an,试编写算法实现:⽤栈结构存储输⼊的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。

算法应对异常情况(⼊栈满等)给出相应的信息。

设有⼀个背包可以放⼊的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。

数据结构复习题

数据结构复习题

一、单项选择题1.评价一个算法时间性能的主要标准是()A.算法易于调试B. 算法易于理解C.算法的稳定性和正确性D.算法的时间复杂度2.可用带表头结点的链表来表示表,也可用不带表头结点的链表来表示表,前者的主要好处是()A.可以加快对表的遍历B.使空表和非空表的处理统一C.提高存取结点的速度D.节省存储空间3.稀疏矩阵一般的压缩存储有两种,即()。

A.一维数组和二维数组B.一维数组和三元组C.二维数组和十字链表D.三元组和十字链表4.链表不具有的特点是()。

A.可随机访问任一元素B.插入删除不需要移动元素C.不必事先估计存储空间D.所需空间与线性表的长度成正比5.非空的循环单链表head的尾结点p满足()。

A.P->next==NULL B.p==NULL C.P->next==head D.P==head 6.对稀疏矩阵进行压缩存储是为了()。

A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度7.数据结构中,与所使用的计算机无关的是数据的()结构。

A.顺序B.物理C.逻辑D.物理和存储8.在长度为n的顺序表中插入一个元素时,等概率情况下的平均移动元素的次数是()。

A.(n-1)/2B.n/2C.n*(n-1)/2D.(n+1)/29.对于一个头指针为H的带头结点的单链表,判定该表为空表的条件是()A. H==NULL B.H!=NULL C.H→next ==H D.H→next==NULL10. 在一个顺序表中,若表的第一个元素的存储地址是210,每一个元素的长度为3,则第5个元素的存储地址是()。

A.219 B.222 C.225 D.22811. 栈S最多能容纳4个元素,现有6个元素按a,b,c,d,e,f的顺序进栈,下面序列()是可能的出栈序列。

A.edcbaf B.bcefad C.cbedaf D.adfebc12.循环队列用数组A[M]存放元素,已知其头尾指针分别为front和rear,则当前队列中的元素个数是()。

数据结构复习题及参考答案

《数据结构》课程复习资料一、填空题:1.设需要对5个不同的记录关键字进行排序,则至少需要比较________次,至多需要比较__________次。

2.设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较_________次。

3.设在长度为20的有序表中进行二分查找,则比较一次查找成功的结点数有_________个,比较两次查找成功有结点数有_________个。

4.数据结构从逻辑上划分为三种基本类型:___________、__________和___________。

5.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。

6.向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___________。

7.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。

8.在快速排序、堆排序、归并排序中,_________排序是稳定的。

9.在有n个叶子结点的哈夫曼树中,总结点数是_______。

10.一棵树T采用二叉链表存储,如果树T中某结点为叶子结点,则在二叉链表BT中所对应的结点一定_______。

11.3.已知数组A[10][10]为对称矩阵,其中每个元素占5个单元。

现将其下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]对应的地址是_______。

12.在有n个结点的无向图中,其边数最多为_______。

13.取出广义表A=(x,(a,b,c,d))中原子x的函数是_______。

14.对矩阵采用压缩存储是为了___ ____。

15.带头结点的双循环链表L为空表的条件是_______。

16.设线性表中元素的类型是实型,其首地址为1024,则线性表中第6个元素的存储位置是。

17.对于顺序存储的栈,因为栈的空间是有限的,在进行运算时,可能发生栈的上溢,在进行运算时,可能发生栈的下溢。

数据结构复习题库

数据结构复习题库一、填空题(24分,每空1分)1.1绪论1、数据中指输入到计算机中并能被计算机程序处理的符号的总称。

2、数据对象是具有相同性质的数据元素的集合,它是数据的子集。

3、数据结构:带结构的数据元素的集合;是指数据以及相互之间的联系,主要描述数据及其关系在计算机内如何表示、存取和处理。

4、数据的逻辑结构是指数据元素之间逻辑关系的整体,它与数据的存储结构无关,是独立于计算机的。

数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它是依赖于计算机语言的。

5、数据结构在计算机意义下,包含三个方面的内容:(1)数据元素之间的逻辑关系;是指数据及其相互之间的关系,它是根据人们解决实际问题的需要和问题本身所含数据之间的内在联系而抽象出来的;(2)数据的存储方式;(3)数据的运算。

6、数据的逻辑结构可归结为以下四类: 线性结构、树形结构、图状结构、集合结构7、数据的存储方式可归结为以下四类: 1)顺序存储2)链接存储3)索引存储4)散列存储。

8、抽象数据类型(Abstract Data Type 简称ADT):是指一个数学模型以及定义在此数学模型上的一组操作。

抽象数据类型可以定义一个完整的数据结构。

算法9、数据结构是指数据及其相互之间的____联系____。

当结点之间存在M对N(M:N)的联系时,称这种结构为图(或图结构)。

10、算法的五个重要特性是指(1)有穷性、(2)确定性:(3)可行性、(4)输入、(5)输出;其中有穷性是指:执行有限步后能够在有限时间内(合理)结束;确定性是指:每一步都应确切地、无二义性地定义;(3)可行性:每条指令可以执行且有正确的结果。

11、评价一个算法的好坏主要依据:1正确性2、可读性3、健壮性4、高效率与低存储量需求。

12、算法效率的衡量方法有:事后统计法和事前分析估算法;事前估算法主要考虑:(1)算法选用的策略、(2)、问题的规模。

13、算法时间复杂度是算法中基本运算重复执行次数多少的量度。

数据结构复习题 有答案的打印版

一、选择题1.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

3.线性表是具有n个( C )的有限序列(n>0)。

A.表元素B.字符C.数据元素D.数据项E.信息项2.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表4. 静态链表中指针表示的是( C ).A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址5. 链表不具有的特点是( B )A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比1. 对于栈操作数据的原则是(B )。

A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( A )A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 41 5 63. 设栈的输入序列是1,2,3,4,则(D )不可能是其出栈序列。

A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,1. 已知数组A[0..9,0..9]的每个元素占5个存储单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,求A[6,8]的地址。

13402. 已知二维数组A[1..10,0..9]中每个元素占4个单元,在按行优先方式将其存储到起始地址为1000的连续存储区域时,求A[5,9]的地址。

数据结构 复习题

数据结构填空题:1、对于一个以顺序实现的循环队列 Q[0,… ,m-1], 队首、队尾指针分别front和rear,其判空的条件是(),判满的条件()。

2、数据结构有线性结构、树结构、( )、()等几种逻辑结构。

3、衡量一个算法的优劣主要看它的()效率和()效率。

4、在二叉树中,指针p所指结点为叶子结点的条件是()同时()。

5、对于n个顶点的有向图,采用邻接矩阵表示,求图中边数的方法是(),判断任意两个顶点i和j是否有边连通的方法是( ),求任意一个顶点的度的方法是()。

6、Dijkstra算法从源点到其余各顶点的最短路径的路径长度按()次序依次产生。

选择题:1、有一组数据{15,9,7,8,20,-1,7,4},用堆排序的筛选方法建立的初始堆为()。

A、{-1,4,8,9,20,7,15,7}B、{-1,7,15,7,4,8,20,9}C、{-1,4,7,8,20,15,7,9}D、以上都不对。

2、对关键字{28,16,32,12,60,2,5,72}序列进行快速排序,第一趟一次划分结果为()。

A、(2,5,12,16)26(60,32,72)B、(5,16,2,12)28(60,32,72)C、(2,16,12,5)28(60,32,72)D、(5,16,2,12)28(32,60,72)3、以下排序方法中,()不需要进行关键字的比较。

A、快速排序B、归并排序C、基数排序D、堆排序4、在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行()。

A、s->next=p->next;p->next=s;B、p->next=s; s->next=q;C、p->next= s->next; s->next=p;D、q->next=s; s->next=p.5、向一个长度为n的顺序表中插入一个新元素的平均时间复杂度为()。

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

一、填空题1、数据结构就是一门研究数据的逻辑结构和物理结构,以及它们之间的关系和所定义的算法如何运行的学科。

2、四种基本逻辑结构分别是集合、线性结构、树形结构和图状结构。

3、算法的质量可从以下几个方面来评价:正确性、易读性、健壮性和高效率。

4、线性表的最基本操作有插入、删除和定位(查找)三种。

5、设每个数据元素占用K个存储单元,若a[1]的地址为Loc(a1),则a[i]的地址为Loc(a1)+(i-1)*k。

6、栈是一种操作在栈顶一端进行的线性表。

7、栈的结构特征是后进先出。

8、在队列中,允许进队的一端称为队尾,允许出队的一端称为队首。

9、队列的结构特征是先进先出。

10、若串的长度为0时,该串称之为空串。

11、树中度数为0的结点称为叶结点。

12、已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第1个元素的地址为address,则第i个结点的地址是address+(i-1)*m。

13、线性表有两种存储结构:顺序存储结构和链式存储结构,就两种存储结构完成下列填空:顺序存储结构存储密度较大,链式存储结构存储利用率较高,顺序存储结构可以随机存取,链式存储结构不可以随机存取,链式存储结构插入和删除操作比较方便。

14、顺序表中逻辑上相邻的元素在物理位置上也相邻,在链表中逻辑上相邻的元素的物理位置不一定相邻。

15、在顺序表la的第i个元素前插入一个新元素,则有效的i值范围是 1 <=i<=length;在顺序表lb的第j个元素之后插入一个新元素,则j的有效范围是 1 <= j<=length;要删除顺序表lc的第k个元素,则k的有效范围是 1 <=k<=length。

16、设有一个空栈,现有输入序列为1,2,3,4,5,经过操作序列 push , pop , push , push , pop, push ,push ,pop 后,现在已出栈的序列是1,3,5,栈顶元素的值是4。

17、设有栈 S ,若线性表元素入栈顺序为1,2,3,4,得到的出栈序列为1,3,4,2,则用栈的基本运算Push, Pop描述的操作序列为push , pop, push, push , pop, push , pop, pop。

18、在一个链队列中,若队首指针为 front,队尾指针为 rear,则判断该队列只有一个结点的条件front!=NULL&&front=rear。

19、设循环队列的头指针 front 指向队头元素,尾指针 rear 指向队尾元素后的一个空闲元素,队列的最大空间为 MAX ,则队空的标志为front=rear,队满的标志为((rear+1)%MAX=front),当rear<front 时队列长度是rear-front+MAX20、已知某二叉树的先序遍历次序为afbcdeg,中序遍历次序为cedbgfa。

其后序遍历次序为edcgbfa。

层次遍历次序为afbcgde。

21、设有二维数组A (5 x 7) ,每一元素用相邻的4个字节存储,存储器按字节编址。

已知A00的存储地址为100。

则按行存储时,元素A14的第一个字节的地址是144;按列存储时,元素A14的第一个字节的地址是184。

22、队列的插入操作是在队列的队尾进行,删除操作是在队列的队首进行。

23、当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是top==0。

24、设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用128个字节。

W中第6 行的元素和第4 列的元素共占用44个字节。

若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为208。

25、二叉树是指度为2的有序树。

一棵结点数为N的二叉树,其所有结点的度的总和是n-1。

26、用具有n个元素的一维数组存储一个循环队列,则其队首指针总是指向队首元素的前一个位置,该循环队列的最大长度为n-1。

27、一棵高度为5的二叉树中最少含有5个结点,最多含有31个结点;28、在串S=“structure”中,以t为首字符的子串有12个。

29、假设一个9阶的上三角矩阵A按列优先顺序压缩存储在一维数组B中,其中B[0]存储矩阵中第1个元素a1,1,则B[31]中存放的元素是a4,8。

30、设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是4,编号为8的左孩子结点的编号是16。

31、在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动n-i+1个元素。

32、在单链表中设置头结点的作用是简化插入、删除操作。

33、根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成单链表和多重链表;34、在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是f->rnext=p->rnext、p->rnext->lnext=f、p->rnext=f、f->lnext=p。

35、链接存储的特点是利用指针来表示数据元素之间的逻辑关系。

36、已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:p->next=p->next->next37、对于栈操作数据的原则是后进先出。

38、栈是限定仅在表尾进行插入或删除操作的线性表。

39、在作进栈运算时应先判别栈是否栈满;在作退栈运算时应先判别栈是否栈空;40、循环队列的引入,目的是为了克服假溢出41、队列的特点是先进先出。

42、数组的存储结构采用顺序存储方式。

43、设有二维数组A[0..9,0..19],其每个元素占两个字节,第一个元素的存储地址为100,若按列优先顺序存储,则元素A[6,6]存储地址为232。

44、二叉树由根结点,左子树,右子树三个基本单元组成。

45、在二叉树中,指针p所指结点为叶子结点的条件是p->lnext=NULL &&p->rnext=NULL。

46、深度为k的完全二叉树至少有2k-1个结点,至多有2k-1个结点。

二、算法填空题1、顺序表的定位算法struct node{int data[20];int length;};int loc(struct node *l,int item) {int i,j;j=l->length;if(j==0) return 0;for(i=0;i<j;i++)if(l->data[i]==item) return i; printf(“找不到!”);return 0;}2、顺序表的插入算法struct node{int data[20];int length;};int ins(struct node *l,int i,int x) {int j;if(i<1||i>l->length+1) return 0;for(j=l->length;j>=i;j--)l->data[j]=l->data[j-1];l->data[j-1]=x;l->length++;return 1;}3、顺序表删除算法struct node{int data[20];int length;};int del(struct node *l,int i;){int j;if(i<1||i>l->length)return 0;for(j=i-1;j<l->length-2;j++)l->data[j]=l->data[j+1];l->length--;return 1;}4、单链表的定位算法struct node{int data;struct node *next;};int loc(struct node*l,int item) {int i;struct node *temp;temp=l->next;while(temp!=NULL&&temp->data!=item){ i++;temp=temp->next;}if(temp==NULL) return 0;else return i;}5、单链表的插入算法(后插法)struct node{int data;struct node *next;};int ins(struct node *l,int i,int item){int j=1;struct node *node,*temp;node=(struct node*)malloc(sizeof(struct node)); node->data=item;temp=l->next;if(temp==NULL)if(i==0){ l->next=node;node->next=NULL;return 1;}elsereturn 0;while(j<i&&temp!=NULL){ temp=temp->next;j++;}if(temp==NULL) return 0;node->next=temp->next;temp->next=node;return 1;}6、单链表的删除算法struct node{int data;struct node *next;};int del(struct node *l,int i) {struct node *temp,*p;int j=0;temp=l;if(temp->next==NULL)return 0; while(j<i-1&&temp->next!=NULL) { j++;temp=temp->next;}if(temp->next==NULL)return 0; p=temp->next;temp->next=p->next;free(p);return 1;}7、双向链表的插入算法Struct node{int data;struct node *lnext;struct node *rnext;};int insertdlist(struct node *l,int i,int item) { int j=1;struct node *node,*temp;node=(struct node*)malloc(sizeof(struct node)); node->data=item;temp=l->rnext;if(temp==NULL)if(i==0){ l->rnext=node;node->rnext=NULL;node->lnext=l;return 1;}elsereturn 0;while(j<i&&temp!=NULL){ temp=temp->rnext;j++;}if(temp==NULL) return 0;node->rnext=temp->rnext;node->lnext==temp;temp->rnext->lnext=node;temp->rnext=node;return 1;}8、双向链表的删除算法Struct node{int data;struct node *lnext;struct node *rnext;};int deldlist(struct node *head,int i) {struct node *temp,*p;int j=0;temp=head;if(temp->rnext==NULL)return 0;while(j<i&&temp->rnext!=NULL){ j++;temp=temp->rnext;}if(j<i&&temp->rnext==NULL)return 0;temp->lnext->rnext=temp->rnext;if(temp->rnext!=NULL)temp->rnext->lnext=temp->lnext;free(temp);return 1;}9、顺序栈的入栈算法Struct node{int stack[20];Int top;};struct node *push(struct node *s,int x) {if(s->top==20)return NULL;else{s->stack[s->top]=x;s->top++;return s;}}10、顺序栈的出栈算法Struct node{int stack[20];Int top;};int pop(struct node *S){if(S->top==0){printf("\n顺序栈是空栈!");return 0;}S->top--;return S->stack[S->top];}11、链栈的入栈算法struct node{int data;struct node *next;};struct node *push(struct node *top,int item) {struct node *p;p=(struct node*)malloc(sizeof(struct node));p->data=item;p->next=top;top=p;return top;}12、链栈的出栈算法struct node{int data;struct node *next;};struct node *pop(struct node *top){struct node *p;if(!top){printf("链栈是空栈!");return NULL;}p=top;top=top->next;free(p);return top;}13、链队的进队算法struct node{int data;struct node *next;};struct link{struct node *front;struct node *rear;};void addq(struct link *head,int item) {struct node *p;p=(struct node*)malloc(sizeof(struct node));p->data=item;p->next=NULL;head->rear->next=p;head->rear=p;return;}14、链队的出队算法struct node{int data;struct node *next;};struct link{struct node *front;struct node *rear;};void delq(struct link *head){struct node *p;p=head->front;if(!p){printf("空队不能做出队操作!");return;}head->front=head->front->next;free(p);return;}三、判断题(T)1、栈和队列都是限制存取点的线性结构。

相关文档
最新文档