数据结构考试试题二及参考答案

合集下载

数据结构-数据结构历年考题及答案2

数据结构-数据结构历年考题及答案2

中国矿业大学2011-2012学年《数据结构》试卷(A卷)(考试时间:100分钟)一. 填空(每空2分,共40分)1. 数据结构式具有相同性质的数据元素的(1)。

2. 通常程序在调用另一个程序时,都需要使用一个(2)来保存被调用程序内分配的局部变量、形式参数的存储空间以及返回地址。

3. 有6行8列的二维数组A,每个元素用相邻的6个字节存储,存储器按字节编址,已知A的起始存储地址(基址)为1000,在行优先存储和列优先存贮情况下A[5,5]的存储地址分别为__(3)_____,_____(4)____。

4. 完全二叉树第4 个节点的父节点是第 (5) 节点,左孩子是第 (6) 个节点。

如果该二叉树有10层,则共有 (7) 个节点。

5. 请描述在循环队列Q中,队头和队尾指针分别由front和rear表示,该队列有10个存储空间,判断队空和队满的条件分别分:_____(8)________,_______(9)_________。

6. 字符串t=”child”,s=”cake”,请写出下列函数的结果:StrLength(t) =(10)__;Concat(SubString(s,3,1),SubString(t,2,2))=____(11)___。

7. 一棵二叉树为则后序序列为(12),中序序列为(13),先序序列为__(14)____。

8. 请用数据序列{53,17,12,66,58,70,87,25,56,60 }构造一棵二叉排序树_(15)_。

9.。

一个栈输入的序列式1,2,3,则可能的且以2为开头的输出序列是 (16) ,不可能的序列是____(17)____。

10. 有n个结点的无向完全图的边数分别为_______(18)_______。

11. 要从数据:2,3,4,8,9,11,13查找11,若采用折半查找法,则在(19)次比较后,才找到该数据。

12. 在直接插入排序、希尔排序、冒泡排序和快速排序中,平均情况下(20)_____最快。

数据结构试卷带答案

数据结构试卷带答案

数据结构试卷带答案数据结构试卷(一)一、选择题(20分)1.组成数据的基本单位是( 1.C )。

(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是( C )。

(A) 线性结构(B) 树型结构(C) 图型结构(D) 集合3.数组的逻辑结构不同于下列(D)的逻辑结构。

(A) 线性表(B) 栈(C) 队列(D) 树4.二叉树中第i(i≥1)层上的结点数最多有(C)个。

(A) 2i (B) 2i(C) 2i-1(D) 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B 需要的操作为(.A )。

(A) p->next=p->next->next (B) p=p->next(C) p=p->next->next (D) p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(.C )。

(A) 6 (B) 4 (C) 3 (D) 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为(C )。

(A) 100 (B) 40 (C) 55 (D) 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为(8.B(A) 3 (B) 4 (C) 5 (D) 19.根据二叉树的定义可知二叉树共有(B)种不同的形态。

(A) 4 (B) 5 (C) 6 (D) 710.设有以下四种排序方法,则(B )的空间复杂度最大。

(A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序二、填空题(30分)1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。

数据结构--第二章考试题库(含答案)

数据结构--第二章考试题库(含答案)

第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?()【北方交通大学 2001 一、4(2分)】A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()【北方交通大学 2001 一、14(2分)】A.线性表采用顺序存储,必须占用一片连续的存储单元。

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

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

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

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

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

【哈尔滨工业大学 2001二、1(2分)】A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

【南开大学 2000 一、3】A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表【合肥工业大学 2000 一、1(2分)】7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

则采用()存储方式最节省运算时间。

【北京理工大学 2000一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关11. 线性表的表元存储方式有((1))和链接两种。

(完整word版)数据结构单元2练习参考答案

(完整word版)数据结构单元2练习参考答案

单元练习2一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(×)(1)线性表的链式存储结构优于顺序存储。

(×)(2)链表的每个结点都恰好包含一个指针域。

(√)(3)在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。

(×)(4)顺序存储方式的优点是存储密度大,插入、删除效率高。

(×)(5)线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。

(×)(6)顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

(√)(7)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。

(√)(8)线性表采用顺序存储,必须占用一片连续的存储单元。

(×)(9)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

(ㄨ)(10)插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。

二.填空题(1)顺序表中逻辑上相邻的元素在物理位置上必须相连。

(2)线性表中结点的集合是有限的,结点间的关系是一对一关系。

(3)顺序表相对于链表的优点是:节省存储和随机存取。

(4)链表相对于顺序表的优点是:插入、删除方便。

(5)采用顺序存储结构的线性表叫顺序表。

(6)顺序表中访问任意一个结点的时间复杂度均为O(1)。

(7)链表相对于顺序表的优点是插入、删除方便;缺点是存储密度小。

(8)在双链表中要删除已知结点*P,其时间复杂度为O(1)。

(9)在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为 O(n) 。

(10)单链表中需知道头指针才能遍历整个链表。

(11)线性表中第一个结点没有直接前趋,称为开始结点。

(12)在一个长度为n的顺序表中删除第i个元素,要移动n-i 个元素。

(13)在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n- i +1 个元素。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构试题及答案(2)

数据结构试题及答案(2)

数据结构试题一、单选题(每题 2 分,共20分)1.1. 对一个算法的评价,不包括如下( B )方面的内容。

A.健壮性和可读性B.并行性 C.正确性 D.时空复杂度2.2. 在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.3. 对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.4. 一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.5. AOV网是一种( D )。

A.有向图 B.无向图 C.无向无环图D.有向无环图6.6. 采用开放定址法处理散列表的冲突时,其平均查找长度( B )。

A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同 D.高于二分查找7.7. 若需要利用形参直接访问实参时,应将形参变量说明为( D )参数。

A.值 B.函数 C.指针 D.引用8.8. 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( A )。

A.行号B.列号 C.元素值 D.非零元素个数9.9. 快速排序在最坏情况下的时间复杂度为( D )。

A.O(log2n) B.O(nlog2n) C.O(n) D.O(n2)10.10. 从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。

A. O(n)B. O(1)C. O(log2n) D. O(n2)二、运算题(每题 6 分,共24分)1. 1. 数据结构是指数据及其相互之间的_对应关系(联系)。

数据结构习题及答案 (2)

第二章线性表一、选择题1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )(A)110 (B)108(C)100 (D)120参考答案:B2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

(A)64(B)63 (C)63.5 (D)7参考答案:C3.线性表采用链式存储结构时,其地址()。

(A) 必须是连续的 (B) 部分地址必须是连续的(C) 一定是不连续的 (D) 连续与否均可以参考答案:D4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()(A)s->next=p;p->next=s; (B) s->next=p->next;p->next=s;(C)s->next=p->next;p=s; (D)p->next=s;s->next=p;参考答案:B5.在一个单链表中,若删除p所指结点的后续结点,则执行()(A)p->next=p->next->next; (B)p=p->next; p->next=p->next->next;(C)p->next=p->next; (D)p =p->next->next;参考答案:A6.下列有关线性表的叙述中,正确的是()(A)线性表中的元素之间隔是线性关系(B)线性表中至少有一个元素(C)线性表中任何一个元素有且仅有一个直接前趋(D)线性表中任何一个元素有且仅有一个直接后继参考答案:A7.线性表是具有n个()的有限序列(n≠0)(A)表元素(B)字符(C)数据元素(D)数据项参考答案:C二、判断题1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。

()2.如果没有提供指针类型的语言,就无法构造链式结构。

()3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪种数据结构是线性结构?A. 栈B. 树C. 队列D. 图答案:A2. 在计算机科学中,什么是最基本的数据结构?A. 数组B. 链表C. 栈D. 树答案:C3. 下列哪种操作的时间复杂度是O(1)?A. 在链表中插入元素B. 在数组中查找元素C. 在树中删除节点D. 在图中寻找最短路径答案:B4. 下列哪种数据结构常常用于实现栈和队列?A. 数组B. 链表C. 树D. 图答案:A5. 下列哪种数据结构是有序的?A. 栈B. 队列C. 链表D. 图答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种后进先出(____)的数据结构。

答案:线性表2. 队列是一种先进先出(____)的数据结构。

答案:线性表3. 链表是一种____数据结构,由一系列节点组成。

答案:非线性4. 二叉树是一种特殊的树,它的每个节点最多有两个____。

答案:子节点5. 哈希表是通过____函数将关键字映射到表中的位置来访问数据。

答案:哈希三、判断题(每题2分,共20分)1. 树是一种线性结构。

()答案:错误2. 链表的插入和删除操作时间复杂度都是O(1)。

()答案:错误3. 图是一种线性结构。

()答案:错误4. 哈希表是一种基于顺序结构的的数据结构。

()答案:错误5. 在数据结构中,时间复杂度O(n)表示算法随着输入规模的增加而线性增长。

()答案:正确四、简答题(每题10分,共30分)1. 请简述栈和队列的特点和应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,应用场景包括函数调用栈、表达式求值等。

队列是一种先进先出(FIFO)的数据结构,应用场景包括任务队列、缓冲区等。

2. 请简述链表的优缺点。

答案:链表的优点包括动态扩容、插入和删除操作时间复杂度为O(1)、可以方便地实现各种复杂数据结构。

缺点包括占用内存空间较大、不如数组支持随机访问。

数据结构(第一、二、三组答案)

考试科目:数据结构第一组:一、编程题(每小题30分,共60分)(一)用标准C语言实现Hanoi塔问题#include <stdio.h>#include <stdlib.h>void move(int n,char x,char y,char z) {if (n==1) {printf("%c--->%c\n",x,z);}else {move(n-1,x,z,y);printf("%c--->%c\n",x,z);move(n-1,y,x,z);}}int main(){int n;scanf("%d",&n);move(n,'X','Y','Z');return 0;}(二)1.设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法。

二、解答题(20分)(一)已知一棵二叉树的先序序列是ABCDEFGHIJK,中序序列是CDBGFEAHJIK,请构造出该二叉树。

三、画图题(20分)(一)设有序顺序表中的元素依次为017, 094, 154, 170, 275,503, 509, 512, 553, 612, 677, 765, 897, 908。

试画出对其进行折半搜索时的判定树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。

第二组:一、编程题(每小题30分,共60分)(一)已知某哈希表的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母在字母表中的序号,处理冲突的方法为线性探测开放定址法。

试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。

(二)设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。

数据结构单元2 同步训练及答案

单元2 同步训练及参考答案同步训练一、单项选择题1.线性表是()的有限序列。

A.数据B.数据项C.数据元素D.表元素2.以下关于线性表的说法不正确的是()。

A.线性表中的数据元素可以是数字、字符、记录等不同类型。

B.线性表中包含的数据元素个数不是任意的。

C.线性表中的每个结点都有且只有一个直接前驱和直接后继。

D.存在这样的线性表:表中各结点都没有直接前驱和直接后继。

3.顺序表是线性表的()。

A.链式存储结构B.顺序存储结构C.索引存储结构D.散列存储结构4.对于顺序表的优缺点,以下说法错误的是()。

A.无需为表示结点间的逻辑关系而增加额外的存储空间B.可以方便地随机存取表中的任一结点C.插入和删除运算较方便D.容易造成一部分空间长期闲置而得不到充分利用5.在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。

A.基地址B.结点存储长度C.向量大小D.基地址和存储长度6.一个顺序表第一个元素的存储地址是100,每个元素的存储长度为4,则第5个元素的地址是()。

A.110 B.116 C.100 D.120 7.一个长度为n的顺序表中,在第i(1≤i≤n+1)个元素的位置上插入一个新元素时,需要向后移动个元素。

A.n-i B.n-i+1 C.n-i-1 D.i8.一个长度为n的顺序表中,删除第i(1≤i≤n)个元素时,需要向前移动()个元素。

A.n-i B.n-i+1 C.n-i-1 D.i9.在一个长度为n的顺序表中插入一个结点需平均移动()个结点。

A.(n+1)/2 B.n/2 C.(n-1)/2 D.n10.在一个长度为n的顺序表中删除一个结点需平均移动()个结点。

A.(n+1)/2 B.n/2 C.(n-1)/2 D.n11.在()情况下应当选择顺序表作为数据的存储结构。

A.对线性表的主要操作为插入操作B.对线性表的主要操作为插入操作和删除操作C.线性表的表长变化较大D.对线性表的主要操作为存取线性表的元素12.下列算法实现在顺序表L的第i(1≤i≤L->length+1)个结点的位置上插入值为t的元素,其中ListSize为顺序表L的容量,表中第1个结点的数据存放在数组元素L->data[0]中。

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

课程名称: 数据结构 考试时间:姓名: 班级: 学号:一、选择题(每题2分,共20分)( )1、 链表适用于_______查找A) 顺序 B) 二分法 C) 顺序,也能二分法 D) 随机( )2、试利用Dijkstra 算法求图中从顶点a 到其他各顶点间的最短路径A) a,c,f,e,d,g,bB) a,c,e,f,d,g,bC) a,c,f,d,e,g,bD) a,c,f,d,e,b,g(有问题)( )3、栈中元素的进出原则是A )先进先出B )后进先出C )栈空则进D )栈满则出 ( )4、已知图的邻接矩阵如下,根据算法思想,则从顶点0出发按广度优先遍历的结点序列是_______。

(有问题)A) 0 2 4 3 6 5 1 B)0 1 2 3 4 5 6 C) 0 4 2 3 1 5 6 D) 0 1 3 4 2 5 6( )5、用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman )树的带权路径长度是。

A )32B )33C )34D )15( )6、给定二叉树的两种遍历序列,分别是:先序遍历序列:D ,A ,C ,E ,B ,H ,F ,G ,I ; 中序遍历序列:D ,C ,B ,E ,H ,A ,G ,I ,F ,其后序遍历序 列为:A) BHECGIFAD B) BHECIGADFC) BHECIGFAD D) CHEBIGADF( )7、有8个结点的无向图最多有 条边。

A )14B )28C )56D )112⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡0100011101100001011010110011001000110010011011110()8、折半查找有序表(4,6,10,12,20,30,50,70,88,100)。

若查找表中元素58,则它将依次与表中比较大小,查找结果是失败。

A)20,70,30,50 B)30,88,70,50C)20,50 D)30,88,50()9、一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为A)38, 40, 46, 56, 79, 84 B)40, 38, 46 , 79, 56, 84C)40, 38,46, 56, 79, 84 D)40, 38, 46, 84, 56, 79()10、排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为A)希尔排序B)归并排序C)插入排序D)选择排序二、填空题(每空2分,共20分)1、在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有结点,其余每个结点的后续结点数可以有。

2、是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

3、设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。

在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。

假设栈或队的初始状态都是空。

现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是,第二次出栈得到的元素是是;类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是,第二次出队得到的元素是。

经操作后,最后在栈中或队中的元素还有个。

三、算法阅读理解题(每题10分,共30分)1、写出下列程序段的输出结果(栈的元素类型为char)。

void main( ){Stack S;// Stack表示栈类型Char x,y;InitStack(S);//初始化栈X=’c’;y=’k’;Push(S,x);// Push表示入栈操作Push(S,’a’);Push(S,y);Pop(S,x); // Pop表示出栈操作Push(S,’t’);Push(S,x);Pop(S,x); Push(S,’s’);while(!StackEmpty(S)){Pop(S,y);printf(y);};Printf(x);}2、设如图一所示的二叉树BTREE的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。

其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,对二叉树BTREE,执行算法traversal(root),试分析算法的作用并指出算法执行后的输出结果。

图一:二叉树BTREEAB DC F GE3、下面程序实现了对输入数据进行直接插入排序的过程,并输出排序后的结果请在____________处给出所缺失的内容。

typedef struct{Int key;int other_data;}RecordType;void InsSort(RecordType r[], int length)/* 对记录数组r做直接插入排序,length为数组中待排序记录的数目*/ {int i,j;for (i=2; i<=length; i++){(1); /*设置哨兵*/j=i-1;(2);/*寻找插入位置*/{r[j+1]= r[j];j=j-1;}(3); /*将待插入记录插入到已排序的序列中*/ }}void main(){int i,j;RecordType r[20];int len;printf("请输入待排序记录的长度:");scanf("%d",&len);for(i=1;i<=len;i++){printf("请输入第%d个记录元素:",i);scanf("%d",&j);(4); /*将输入的数据保存到结构体中的数据域中*/ }for(i=1;i<=len;i++)printf("%d ",r[i].key);printf("\n");InsSort(r,len);for(i=1;i<=len;i++)printf("%d ", (5)); /*输出排序后的数据*/printf("\n");}四、算法设计题(每题15分,共30分)1、下面给出了单链表的结构体类型定义,请编写算法,由键盘输入一组数据,用尾插法建立一个单链表,并输出链表中的数据。

编写算法时,给出算法的功能说明和一定数量的注释。

typedef char ElemType;typedef struct Node /*结点类型定义*/{ElemType data;struct Node * next;}Node, *LinkList; /* LinkList为结构指针类型*/2、编写冒泡排序算法,实现对键盘输入的一组数据进行排序并输出结果编写算法时,给出算法的功能说明和一定数量的注释。

参考答案一、选择题(每题2分,共20分)1、A ;2、B?;3、B;4、B;5、B;6、C;7、B;8、A;9、C;10、D。

二、填空题(每空2分,共20分)1、前驱,1,后继,任意多个;2、队列;3、a2,a4,a1,a2,2;三、算法阅读理解题(每题10,共30分)1、答:输出为“stack”。

2、答:该算法实现对二叉树的中序遍历,执行后得到中序序列:ABCCEEBADFFDGG3、1)r[0]=r[i]2)while (r[0].key< r[j].key )3)r[j+1]=r[0];4)r[i].key = j。

5)r[i].key三、算法设计题(每题15分,共30分)1、typedef char ElemType;typedef struct Node /*结点类型定义*/{ElemType data;struct Node * next;}Node, *LinkList; /* LinkList为结构指针类型*/void init_linklist(LinkList *l)/*对单链表进行初始化*/{*l=(LinkList)malloc(sizeof(Node));(*l)->next=NULL;}void CreateFromTail(LinkList L){Node *r, *s;char c;int flag =1; /*设置一个标志,初值为1,当输入"$"时,flag为0,建表结束*/r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/{c=getchar();if(c!='$'){s=(Node*)malloc(sizeof(Node));s->data=c;r->next=s;r=s;}else{flag=0;r->next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/ }}}void main(){LinkList l;Node *p;init_linklist(&l);printf("用尾插法建立单链表,请输入链表数据,以$结束!\n");CreateFromTail(l);p = l->next;while(p!=NULL){printf("%c\n",p->data);p=p->next;}}2、1)冒泡排序程序#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0typedef int KeyType;typedef int OtherType;typedef struct{KeyType key;OtherType other_data;}RecordType;void BubbleSort(RecordType r[], int length )/*对记录数组r做冒泡排序,length为数组的长度*/ {int n,i,j;int change;RecordType x;n=length;change=TRUE;for ( i=1 ; i<= n-1 && change ;++i ){change=FALSE;for ( j=1 ; j<= n-i ; ++j)if (r[j].key > r[j+1].key ){x= r[j];r[j]= r[j+1];r[j+1]= x;change=TRUE;}}} /* BubbleSort */void main(){int i,j;RecordType r[20];int len;printf("请输入待排序记录的长度:");scanf("%d",&len);for(i=1;i<=len;i++){printf("请输入第%d个记录元素:",i);scanf("%d",&j);r[i].key = j;}for(i=1;i<=len;i++)printf("%d ",r[i].key);printf("\n");BubbleSort(r,len);for(i=1;i<=len;i++)printf("%d ",r[i].key);printf("\n");}。

相关文档
最新文档