大学 数据结构考试题和答案
数据结构期末试题及答案
数据结构期末试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构和链式存储结构的主要区别在于:A. 数据元素的存储关系B. 数据元素的存储空间C. 数据元素的存储顺序D. 数据元素的存储位置答案:A2. 下列关于栈的描述中,错误的是:A. 栈是一种后进先出(LIFO)的数据结构B. 栈只能进行插入和删除操作C. 栈顶元素可以被访问D. 栈可以进行顺序存储和链式存储答案:B3. 在二叉树的遍历算法中,不使用递归算法的遍历方式是:A. 前序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:D4. 哈希表的冲突解决方法中,不包括以下哪种:A. 开放定址法B. 链地址法C. 线性探测法D. 排序法答案:D5. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的主要区别在于:A. 搜索的顺序B. 存储结构C. 遍历的深度D. 遍历的宽度答案:A6. 快速排序算法的时间复杂度最坏情况下为:A. O(n)B. O(nlogn)C. O(n^2)D. O(n^3)答案:C7. 下列关于二叉搜索树的描述中,正确的是:A. 每个节点的左子树只包含小于该节点的键值B. 每个节点的右子树只包含大于该节点的键值C. 以上两个选项都正确D. 以上两个选项都不正确答案:C8. 在非递归的二叉树遍历算法中,通常需要使用的数据结构是:A. 栈B. 队列C. 链表D. 数组答案:A9. 一个有n个顶点的无向图,其边数最多为:A. nB. n(n-1)/2C. n(n+1)/2D. n^2答案:B10. 一个长度为n的数组进行归并排序时,需要的辅助空间大小为:A. O(1)B. O(n)C. O(nlogn)D. O(n^2)答案:B二、填空题(每题2分,共10分)1. 在数据结构中,______是一种特殊的线性表,它的元素个数是固定的。
答案:数组2. 链表中,每个节点包含数据域和______。
(完整版)数据结构试题及答案
数据结构试卷(一)王彬一、单选题(每题2 分,共20分)1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中哪一个是非线性结构?( )A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
cA.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( d ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为A. O(1)B. O(n)C. O(1og2n)D. O(n2)9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( c d)个,A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题(每空1分,共26分)1.通常从四个方面评价算法的质量:____ ____、________、________和_______。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
《数据结构》期末考试试卷试题及答案
《数据结构》期末考试试卷试题及答案第一部分:选择题(每题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. 编写一个函数,实现链表的插入操作。
《数据结构》期末考试试卷试题及答案
《数据结构》期末考试试卷试题及答案一、选择题(每题5分,共20分)1. 下列哪个不是线性结构?A. 栈B. 队列C. 图D. 数组2. 下列哪个不是栈的基本操作?A. 入栈B. 出栈C. 查找D. 判断栈空3. 下列哪个不是队列的基本操作?A. 入队B. 出队C. 查找D. 判断队列空4. 下列哪个不是图的基本概念?A. 顶点B. 边C. 路径D. 环二、填空题(每题5分,共20分)5. 栈是一种______结构的线性表,队列是一种______结构的线性表。
6. 图的顶点集记为V(G),边集记为E(G),则无向图G=(V(G),E(G)),有向图G=(______,______)。
7. 树的根结点的度为______,度为0的结点称为______。
8. 在二叉树中,一个结点的左子结点是指______的结点,右子结点是指______的结点。
三、简答题(每题10分,共30分)9. 简述线性表、栈、队列、图、树、二叉树的基本概念。
10. 简述二叉树的遍历方法。
11. 简述图的存储结构及其特点。
四、算法题(每题15分,共30分)12. 编写一个算法,实现栈的入栈操作。
13. 编写一个算法,实现队列的出队操作。
五、综合题(每题20分,共40分)14. 已知一个无向图G=(V,E),其中V={1,2,3,4,5},E={<1,2>,<1,3>,<2,4>,<3,4>,<4,5>},画出图G,并给出图G的邻接矩阵。
15. 已知一个二叉树,其前序遍历序列为ABDCE,中序遍历序列为DBACE,请画出该二叉树,并给出其后序遍历序列。
答案部分一、选择题答案1. C2. C3. C4. D二、填空题答案5. 后进先出先进先出6. V(G),E(G)7. 0 叶结点8. 左孩子右孩子三、简答题答案9. (1)线性表:一个线性结构,其特点是数据元素之间存在一对一的线性关系。
大学数据结构期末考试试题(有答案)
“数据结构”期末考试试题一、单选题(每小题2分,共12分)1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HLB. p一>next=HL;HL=p3C. p一>next=Hl;p=HL;D. p一>next=HL一>next;HL一>next=p;2.n个顶点的强连通图中至少含有( )。
A.n—l条有向边B.n条有向边C.n(n—1)/2条有向边D.n(n一1)条有向边3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A.O(1)B.O(n)C.O(1Ogzn)D.O(n2)4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。
A.24 B.48C. 72 D. 535.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。
A.整形B.引用型C.指针型D.常值引用型·6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。
A.O(n) B.O(1)C.O(n2) D.O(10g2n)二、填空题(每空1分,共28分)1.数据的存储结构被分为——、——、——和——四种。
2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为——域和——域。
3.——中缀表达式 3十x*(2.4/5—6)所对应的后缀表达式为————。
4.在一棵高度为h的3叉树中,最多含有——结点。
5.假定一棵二叉树的结点数为18,则它的最小深度为——,最大深度为——·6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定——该结点的值,右子树上所有结点的值一定——该结点的值。
7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层——调整,直到被调整到——位置为止。
《数据结构》期末考试试题及答案
《数据结构》期末考试试题及答案一、选择题(每题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)、可以方便地实现各种复杂数据结构。
缺点包括占用内存空间较大、不如数组支持随机访问。
数据结构试题及答案(十套)
一、单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。
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.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.AOV网是一种()。
A.有向图B.无向图C.无向无环图D.有向无环图6.采用开放定址法处理散列表的冲突时,其平均查找长度()。
A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。
A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。
A.行号B.列号C.元素值D.非零元素个数9.快速排序在最坏情况下的时间复杂度为()。
A.O(log2n) B.O(nlog2n)C.0(n) D.0(n2)10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的______________。
当结点之间存在M对N (M:N)的联系时,称这种结构为_____________________。
数据结构试卷带答案
数据结构试卷一一、选择题20分1.组成数据的基本单位是;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.二叉树中第ii≥1层上的结点数最多有C个;A 2iB 2iC 2i-1D 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为.A ;A p->next=p->next->nextB p=p->nextC p=p->next->nextD p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是.C ;A 6B 4C 3D 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为C ;A 100B 40C 55D 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为A 3B 4C 5D 19.根据二叉树的定义可知二叉树共有 B种不同的形态;A 4B 5C 6D 710.设有以下四种排序方法,则 B 的空间复杂度最大;A 冒泡排序B 快速排序C 堆排序D 希尔排序二、填空题30分1.设顺序循环队列Q0:m-1的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;;2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________,在链式存储结构上实现顺序查找的平均时间复杂度为___________;3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指针域,__________个空指针域;4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为______________________________________;5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表结点;6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系;7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________;8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________;9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句;int indexchar s , char t{i=j=0;whilei<strlens && j<strlent ifsi==tj{i=i+l; j=j+l;}else{i=_______; j=______;}if j==strlentreturni-strlent;else return -1;}10. 设一个连通图G 中有n 个顶点e 条边,则其最小生成树上有________条边;三、应用题30分1.设完全二叉树的顺序存储结构中存储数据ABCDE,要求给出该二叉树的链式存储结构并给出该二叉树的前序、中序和后序遍历序列;2.设给定一个权值集合W=3,5,7,9,11,要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL;3.设一组初始记录关键字序列为19,21,16,5,18,23,要求给出以19为基准的一趟快速排序结果以及第2趟直接选择排序后的结果;4.设一组初始记录关键字集合为25,10,8,27,32,68,散列表的长度为8,散列函数Hk=k mod 7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表;5.设无向图G 所右图所示,要求给出该图的深度优先和广度优先遍历的序列并给出该图的最小生成树;四、算法设计题20分1. 设计判断单链表中结点是否关于中心对称算法;2. 设计在链式存储结构上建立一棵二叉树的算法;3. 设计判断一棵二叉树是否是二叉排序树的算法;数据结构试卷一参考答案一、选择题二、填空题1. F+1 % m2. On,On3. 2n,n+14. s->next=p->next; p->next=s5. n, 2e6. m=2e7. CBA8. 4,169. i-j+1,010. n-1三、应用题1. 链式存储结构略,前序ABDEC,中序DBEAC,后序DEBCA;2. 哈夫曼树略,WPL=783. 18,5,16,19,21,23,5,16,21,19,18,234. 线性探测:6827322510876543210ΛΛ 链地址法:276832251086543210>->->->->->-h h h h h h h5. 深度:125364,广度:123456,最小生成树T 的边集为E={1,4,1,3,3,5,5,6,5,6}四、算法设计题1. 设计判断单链表中结点是否关于中心对称算法;typedef struct {int s100; int top;} sqstack;int lklistsymmetrylklist head{sqstack stack; = -1; lklist p;forp=head;p=0;p=p->next {++; =p->data;}forp=head;p=0;p=p->next if p->data== =; else return0;return1;}2.设计在链式存储结构上建立一棵二叉树的算法;typedef char datatype;typedef struct node {datatype data; struct node lchild,rchild;} bitree;void createbitreebitree &bt{char ch; scanf"%c",&ch;ifch=='' {bt=0; return;}bt=bitreemallocsizeofbitree; bt->data=ch;createbitreebt->lchild; createbitreebt->rchild;}3.设计判断一棵二叉树是否是二叉排序树的算法;int minnum=-32768,flag=1;typedef struct node{int key; struct node lchild,rchild;}bitree;void inorderbitree bt{if bt=0{inorderbt->lchild; ifminnum>bt->keyflag=0; minnum=bt->key; inorderbt->rchild;}}数据结构试卷二一、选择题24分1.下面关于线性表的叙述错误的是.DA 线性表采用顺序存储必须占用一片连续的存储空间B 线性表采用链式存储不必占用一片连续的存储空间C 线性表采用链式存储便于插入和删除操作的实现D 线性表采用顺序存储便于插入和删除操作的实现2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有个空指针域;A 2m-1B 2mC 2m+1D 4m3.设顺序循环队列Q0:M-1的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为 ;A R-FB F-RC R-F+M%MD F-R+M%M4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为;A BADCB BCDAC CDABD CBDA5.设某完全无向图中有n个顶点,则该完全无向图中有条边;A nn-1/2B nn-1C n2D n2-16.设某棵二叉树中有2000个结点,则该二叉树的最小高度为C;A 9B 10C 11D 127.设某有向图中有n 个顶点,则该有向图对应的邻接表中有B 个表头结点;A n-1B nC n+1D 2n-18.设一组初始记录关键字序列5,2,6,3,8,以第一个记录关键字5为基准进行一趟快速排序的结果为 ;A 2,3,5,8,6B 3,2,5,8,6C 3,2,5,6,8D 2,3,6,5,8二、填空题24分1. 为了能有效地应用HASH 查找技术,必须解决的两个问题是____构造一个好的HASH 函数________________和_确定解决冲突的方法________________________;2. 下面程序段的功能实现数据x 进栈,要求在下划线处填上正确的语句;typedef struct {int s100; int top;} sqstack;void pushsqstack &stack,int x{if ==m-1 printf“overflow”;else {____________________;_________________;}}3. 中序遍历二叉排序树所得到的序列是___________序列填有序或无序;4. 快速排序的最坏时间复杂度为___________,平均时间复杂度为__________;5. 设某棵二叉树中度数为0的结点数为N 0,度数为1的结点数为N 1,则该二叉树中度数为2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域;6. 设某无向图中顶点数和边数分别为n 和e,所有顶点的度数之和为d,则e=_______;7. 设一组初始记录关键字序列为55,63,44,38,75,80,31,56,则利用筛选法建立的初始堆为___________________________;8. 设某无向图G 的邻接表为31241314234321>->->->->->->->->->-v v v v ,则从顶点V 1开始的深度优先遍历序列为___________;广度优先遍历序列为____________;三、应用题36分1. 设一组初始记录关键字序列为45,80,48,40,22,78,则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果;2. 设指针变量p 指向双向链表中结点A,指针变量q 指向被插入结点B,要求给出在结点A 的后面插入结点B 的操作序列设双向链表中结点的两个指针域分别为llink 和rlink;3. 设一组有序的记录关键字序列为13,18,24,35,47,50,62,83,90,查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度;4. 设一棵树T 中边的集合为{A,B,A,C,A,D,B,E,C,F,C,G},要求用孩子兄弟表示法二叉链表表示出该树的存储结构并将该树转化成对应的二叉树;5. 设有无向图G 如右图所示,要求给出用普里姆算法构造最小生成树所走过的边的集合;6. 设有一组初始记录关键字为45,80,48,40,22,78,要求构造一棵二叉排序树并给出构造过程;四、算法设计题16分1. 设有一组初始记录关键字序列K 1,K 2,…,K n ,要求设计一个算法能够在On 的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i ,右半部分的每个关键字均大于等于K i ;2. 设有两个集合A 和集合B,要求设计生成集合C=A ∩B 的算法,其中集合A 、B 和C 用链式存储结构表示;数据结构试卷二参考答案一、选择题二、填空题1.构造一个好的HASH函数,确定解决冲突的方法2.++,=x3.有序4.On2,Onlog2n5.N0-1,2N0+N16.d/27.31,38,54,56,75,80,55,638.1,3,4,2,1,3,2,4三、应用题1.22,40,45,48,80,78,40,45,48,80,22,782.q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;3.2,ASL=911+22+34+42=25/94.树的链式存储结构略,二叉树略5.E={1,3,1,2,3,5,5,6,6,4}6.略四、算法设计题1.设有一组初始记录关键字序列K1,K2,…,K n,要求设计一个算法能够在On的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i,右半部分的每个关键字均大于等于K i;void quickpassint r, int s, int t{int i=s, j=t, x=rs;whilei<j{while i<j && rj>x j=j-1; if i<j {ri=rj;i=i+1;}while i<j && ri<x i=i+1; if i<j {rj=ri;j=j-1;}}ri=x;}2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示;typedef struct node {int data; struct node next;}lklist;void intersectionlklist ha,lklist hb,lklist &hc{lklist p,q,t;forp=ha,hc=0;p=0;p=p->next{ forq=hb;q=0;q=q->next if q->data==p->data break;ifq=0{ t=lklist mallocsizeoflklist; t->data=p->data;t->next=hc; hc=t;}}}数据结构试卷三一、选择题30分1.设某数据结构的二元组形式表示为A=D,R,D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,< 03,08>,<03,09>},则数据结构A是 B ;A 线性结构B 树型结构C 物理结构D 图型结构2.下面程序的时间复杂为Bfori=1,s=0;i<=n;i++ {t=1;forj=1;j<=i;j++ t=tj;s=s+t;}A O nB On2C On3D On43.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为A ;A q=p->next;p->data=q->data;p->next=q->next;freeq;B q=p->next;q->data=p->data;p->next=q->next;freeq;C q=p->next;p->next=q->next;freeq;D q=p->next;p->data=q->data;freeq;4.设有n个待排序的记录关键字,则在堆排序中需要 A 个辅助记录单元;A 1B nC nlog2nD n25.设一组初始关键字记录关键字为20,15,14,18,21,36,40,10,则以20为基准记录的一趟快速排序结束后的结果为 A ;A 10,15,14,18,20,36,40,21B 10,15,14,18,20,40,36,21C 10,15,14,20,18,40,36,2lD 15,10,14,18,20,36,40,216.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为 B ;A O1B Olog2n COn D On27.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为 D ;A n,eB e,nC 2n,eD n,2e8. 设某强连通图中有n个顶点,则该强连通图中至少有 C 条边;A nn-1B n+1C nD nn+19.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列 B 方法可以达到此目的;A 快速排序B 堆排序C 归并排序D 插入排序10.下列四种排序中 D 的空间复杂度最大;A 插入排序B 冒泡排序C 堆排序D 归并排序二、填空殖48分,其中最后两小题各6分1.数据的物理结构主要包括_____________和______________两种情况;2.设一棵完全二叉树中有500个结点,则该二叉树的深度为____9______;若用二叉链表作为该完全二叉树的存储结构,则共有___501________个空指针域;3.设输入序列为1、2、3,则经过栈的作用后可以得到_____5______种不同的输出序列;4.设有向图G用邻接矩阵Ann作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的__出度______,第i列上所有元素之和等于顶点i的____入度____;5.设哈夫曼树中共有n个结点,则该哈夫曼树中有____0____个度数为1的结点;6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为__e=d_______;7.___中序_______遍历二叉排序树中的结点可以得到一个递增的关键字序列填先序、中序或后序;8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较____7____次就可以断定数据元素X是否在查找表中;9.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为__On_________;10.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为_i/2___________,右孩子结点的编号为___2i+1________;11.设一组初始记录关键字为72,73,71,23,94,16,5,则以记录关键字72为基准的一趟快速排序结果为__5,16,23,71,72,73,94_________________________;12.设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一种拓扑序列为__1,4,2,3__________________;13.下列算法实现在顺序散列表中查找值为x的关键字,请在下划线处填上正确的语句;struct record{int key; int others;};int hashsqsearchstruct record hashtable ,int k{int i,j; j=i=k % p;while hashtablej.key=k&&hashtablej.flag=0{j=_j+1___ %m; if i==j return-1;}if _______________________ returnj; else return-1;}14.下列算法实现在二叉排序树上查找关键值k,请在下划线处填上正确的语句;typedef struct node{int key; struct node lchild; struct node rchild;}bitree;bitree bstsearchbitree t, int k{if t==0 return0;else while t=0if t->key==k_____________; else if t->key>k t=t->lchild; else_____________;}三、算法设计题22分1.设计在单链表中删除值相同的多余结点的算法;2.设计一个求结点x在二叉树中的双亲结点算法;数据结构试卷三参考答案一、选择题第3小题分析:首先用指针变量q指向结点A的后继结点B,然后将结点B的值复制到结点A中,最后删除结点B;第9小题分析:9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为Olog2n;二、填空题1.顺序存储结构、链式存储结构2.9,5013. 54.出度,入度5.06.e=d7.中序8.79.O110.i/2,2i+111.5,16,71,23,72,94,7312.1,4,3,213.j+1,hashtablej.key==k14.returnt,t=t->rchild第8小题分析:二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树;在有序表上进行二分查找时的查找长度不超过二叉判定树的高度1+log2n;三、算法设计题1.设计在单链表中删除值相同的多余结点的算法;typedef int datatype;typedef struct node {datatype data; struct node next;}lklist;void delredundantlklist &head{lklist p,q,s;forp=head;p=0;p=p->next{forq=p->next,s=q;q=0;if q->data==p->data {s->next=q->next; freeq;q=s->next;}else {s=q,q=q->next;}}}2.设计一个求结点x在二叉树中的双亲结点算法;typedef struct node {datatype data; struct node lchild,rchild;} bitree;bitree q20; int r=0,f=0,flag=0;void preorderbitree bt, char x{if bt=0 && flag==0if bt->data==x { flag=1; return;}else {r=r+1% 20; qr=bt; preorderbt->lchild,x; preorderbt->rchild,x; }}void parentbitree bt,char x{int i;preorderbt,x;fori=f+1; i<=r; i++ if qi->lchild->data==x || qi->rchild->data break;if flag==0 printf"not found x\n";else if i<=r printf"%c",bt->data; else printf"not parent";}数据结构试卷四一、选择题30分1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为 ;A OnB Onlog2nC O1D On22.设一棵二叉树的深度为k,则该二叉树中最多有个结点;A 2k-1B 2kC 2k-1D 2k-13.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为 ;A nB eC 2nD 2e4.在二叉排序树中插入一个结点的时间复杂度为 ;A O1B OnC Olog2nD On25.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有条有向边;A nB n-1C mD m-16.设一组初始记录关键字序列为345,253,674,924,627,则用基数排序需要进行趟的分配和回收才能使得初始关键字序列变成有序序列;A 3B 4C 5D 87.设用链表作为栈的存储结构则退栈操作 ;A 必须判别栈是否为满B 必须判别栈是否为空C 判别栈元素的类型D 对栈不作任何判别8.下列四种排序中的空间复杂度最大;A 快速排序B 冒泡排序C 希尔排序D 堆9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是 ;A N0=N1+1B N0=N l+N2C N0=N2+1D N0=2N1+l10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过 ;A log2n+1B log2n-1C log2nD log2n+1二、填空题42分1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________;2.设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为_________________________________________________________设结点中的两个指针域分别为llink和rlink;3.根据初始关键字序列19,22,01,38,10建立的二叉排序树的高度为____________;4.深度为k的完全二叉树中最少有____________个结点;5.设初始记录关键字序列为K1,K2,…,K n,则用筛选法思想建堆必须从第______个元素开始进行筛选; 6.设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中有_____个空指针域;7.设有一个顺序循环队列中有M个存储单元,则该循环队列中最多能够存储________个队列元素;当前实际存储________________个队列元素设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置;8.设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_______个数据元素;删除第i个位置上的数据元素需要移动表中_______个元素;9.设一组初始记录关键字序列为20,18,22,16,30,19,则以20为中轴的一趟快速排序结果为______________________________;10.设一组初始记录关键字序列为20,18,22,16,30,19,则根据这些初始关键字序列建成的初始堆为________________________;11.设某无向图G中有n个顶点,用邻接矩阵A作为该图的存储结构,则顶点i和顶点j互为邻接点的条件是______________________;12.设无向图对应的邻接矩阵为A,则A中第i上非0元素的个数_________第i列上非0元素的个数填等于,大于或小于;13.设前序遍历某二叉树的序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为_____________;14.设散列函数Hk=k mod p,解决冲突的方法为链地址法;要求在下列算法划线处填上正确的语句完成在散列表hashtalbe中查找关键字值等于k的结点,成功时返回指向关键字的指针,不成功时返回标志0;typedef struct node {int key; struct node next;} lklist;void createlkhashlklist hashtable{int i,k; lklist s;fori=0;i<m;i++_____________________;fori=0;i<n;i++{s=lklist mallocsizeoflklist; s->key=ai;k=ai % p; s->next=hashtablek;_______________________;}}三、算法设计题28分1.设单链表中有仅三类字符的数据元素大写字母、数字和其它字符,要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符;2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法;3.在链式存储结构上建立一棵二叉排序树;数据结构试卷四参考答案一、选择题1.C 2.D 3.D 4.B 5.C 6.A 7.B 9.C 10.A二、填空题1.On2,Onlog2n2.p>llink->rlink=p->rlink; p->rlink->llink=p->rlink3. 34.2k-15.n/26.50,517.m-1,R-F+M%M8.n+1-i,n-i9.19,18,16,20,30,2210.16,18,19,20,32,2211.Aij=112.等于13.BDCA14.hashtablei=0,hashtablek=s三、算法设计题1.设单链表中有仅三类字符的数据元素大写字母、数字和其它字符,要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符;typedef char datatype;typedef struct node {datatype data; struct node next;}lklist;void splitlklist head,lklist &ha,lklist &hb,lklist &hc{lklist p; ha=0,hb=0,hc=0;forp=head;p=0;p=head{head=p->next; p->next=0;if p->data>='A' && p->data<='Z' {p->next=ha; ha=p;}else if p->data>='0' && p->data<='9' {p->next=hb; hb=p;} else {p->next=hc; hc=p;}}}2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法;typedef struct node {int data; struct node lchild,rchild;} bitree;void swapbitreebitree bt{bitree p;ifbt==0 return;swapbitreebt->lchild; swapbitreebt->rchild;p=bt->lchild; bt->lchild=bt->rchild; bt->rchild=p;}3.在链式存储结构上建立一棵二叉排序树;define n 10typedef struct node{int key; struct node lchild,rchild;}bitree;void bstinsertbitree &bt,int key{if bt==0{bt=bitree mallocsizeofbitree; bt->key=key;bt->lchild=bt->rchild=0;}else if bt->key>key bstinsertbt->lchild,key; else bstinsertbt->rchild,key;}void createbsttreebitree &bt{int i;fori=1;i<=n;i++ bstinsertbt,random100;}数据结构试卷五一、选择题30分1.数据的最小单位是 A ;A 数据项B 数据类型C 数据元素D 数据变量2.设一组初始记录关键字序列为50,40,95,20,15,70,60,45,则以增量d=4的一趟希尔排序结束后前4条记录关键字为 ;A 40,50,20,95B 15,40,60,20C 15,20,40,45D 45,40,15,203.设一组初始记录关键字序列为25,50,15,35,80,85,20,40,36,70,其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为;A 15,25,35,50,20,40,80,85,36,70B 15,25,35,50,80,20,85,40,70,36C 15,25,35,50,80,85,20,36,40,70D 15,25,35,50,80,20,36,40,70,854.函数subs tr“DATASTRUCTURE”,5,9的返回值为 ;A “STRUCTURE”B “DATA”C “ASTRUCTUR”D “DATASTRUCTURE”5.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为 ;A Olog2nB O1C On2D On6.设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为N l,……,度数为m的结点数为Nm,则N0= ;A N l+N2+……+NmB l+N2+2N3+3N4+……+m-1NmC N2+2N3+3N4+……+m-1NmD 2N l+3N2+……+m+1Nm7.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较次;A 25B 10C 7D 18.设连通图G中的边集E={a,b,a,e,a,c,b,e,e,d,d,f,f,c},则从顶点a出发可以得到一种深度优先遍历的顶点序列为 ;A abedfcB acfebdC aebdfcD aedfcb9.设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是 ;A n-iB n-1-iC n+1-iD 不能确定10 设一组初始记录关键字序列为45,80,55,40,42,85,则以第一个记录关键字45为基准而得到一趟快速排序的结果是 C ;A 40,42,45,55,80,83B 42,40,45,80,85,88C 42,40,45,55,80,85D 42,40,45,85,55,80二、填空题共30分1.设有一个顺序共享栈S0:n-1,其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是____________________;2.在图的邻接表中用顺序存储结构存储表头结点的优点是____________________;3.设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素包括对角线上元素存放在nn+1个连续的存储单元中,则Aij与A00之间有_______个数据元素;4.栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为__________表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为_________表;5.设一棵完全二叉树的顺序存储结构中存储数据元素为ABCDEF,则该二叉树的前序遍历序列为___________,中序遍历序列为___________,后序遍历序列为___________;6.设一棵完全二叉树有128个结点,则该完全二叉树的深度为________,有__________个叶子结点;7.设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的________,第i列中所有非零元素个数之和等于顶点i的__________;8.设一组初始记录关键字序列k1,k2,……,k n是堆,则对i=1,2,…,n/2而言满足的条件为_______________________________;9.下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句;void bubbleint rn{fori=1;i<=n-1; i++{forexchange=0,j=0; j<_____________;j++if rj>rj+1{temp=rj+1;______________;rj=temp;exchange=1;}if exchange==0 return;}}10.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句;struct record{int key; int others;};int bisearchstruct record r , int k{int low=0,mid,high=n-1;whilelow<=high{________________________________;ifrmid.key==k returnmid+1; else if____________ high=mid-1;else low=mid+1;}return0;}三、应用题24分1.设某棵二叉树的中序遍历序列为DBEAC,前序遍历序列为ABDEC,要求给出该二叉树的的后序遍历序列;2.设无向图G如右图所示,给出该图的最小生成树上边的集合并计算最小生成树各边上的权值之和;3.设一组初始记录关键字序列为15,17,18,22,35,51,60,要求计算出成功查找时的平均查找长度;4.设散列表的长度为8,散列函数Hk=k mod 7,初始记录关键字序列为25,31,8,27,13,68,要求分别计算出用线性探测法和链地址法作为解决冲突方法的平均查找长度;四、算法设计题16分1.设计判断两个二叉树是否相同的算法;2.设计两个有序单链表的合并排序算法;数据结构试卷五参考答案一、选择题1.A 2.B 3.A 4.A 5.D 6.B 7.B 8.B 9.C 10.C二、填空题1.top1+1=top22.可以随机访问到任一个顶点的简单链表3.ii+1/2+j-14.FILO,FIFO5.ABDECF,DBEAFC,DEBFCA6.8,647.出度,入度8.k i<=k2i && k i<=k2i+19.n-i,rj+1=rj10.mid=low+high/2,rmid.key>k三、应用题1.DEBCA2.E={1,5,5,2,5,3,3,4},W=103.ASL=11+22+34/7=17/74.ASL1=7/6,ASL2=4/3四、算法设计题1.设计判断两个二叉树是否相同的算法;typedef struct node {datatype data; struct node lchild,rchild;} bitree;int judgebitreebitree bt1,bitree bt2{if bt1==0 && bt2==0 return1;else if bt1==0 || bt2==0 ||bt1->data=bt2->data return0;else returnjudgebitreebt1->lchild,bt2->lchildjudgebitreebt1->rchild,bt2->rchild;}2.设计两个有序单链表的合并排序算法;void mergelklistlklist ha,lklist hb,lklist &hc{lklist s=hc=0;whileha=0 && hb=0ifha->data<hb->data{ifs==0 hc=s=ha; else {s->next=ha; s=ha;};ha=ha->next;}else {ifs==0 hc=s=hb; else {s->next=hb; s=hb;};hb=hb->next;}ifha==0 s->next=hb; else s->next=ha;}数据结构试卷六一、选择题30分1.设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为 ;A 20B 30C 40D 452.执行一趟快速排序能够得到的序列是 ;A 41,12,34,45,27 55 72,63B 45,34,12,41 55 72,63,27C 63,12,34,45,27 55 41,72D 12,27,45,41 55 34,63,723.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是;A head==0B head->next==0C head->next==headD head=04.时间复杂度不受数据初始状态影响而恒为Onlog2n的是 ;A 堆排序B 冒泡排序C 希尔排序D 快速排序5.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是 ;A 空或只有一个结点B 高度等于其结点数C 任一结点无左孩子D 任一结点无右孩子6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是 ;A 堆排序B 冒泡排序C 快速排序D 希尔排序7.设某棵三叉树中有40个结点,则该三叉树的最小高度为 ;A 3B 4C 5D 68.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为 ;A OnB On2C On1/2D O1og2n9.二路归并排序的时间复杂度为 ;A OnB On2C Onlog2nD O1og2n10. 深度为k的完全二叉树中最少有个结点;A 2k-1-1B 2k-1C 2k-1+1D 2k-111.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为 ;A front->next=s;front=s;B s->next=rear;rear=s;C rear->next=s;rear=s;D s->next=front;front=s;12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为 ;A On+eB On2C OneD On313.设某哈夫曼树中有199个结点,则该哈夫曼树中有个叶子结点;A 99B 100C 101D 10214.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为 ;A OnB On2C Onlog2nD O1og2n15.设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为 ;A 第i行非0元素的个数之和B 第i列非0元素的个数之和C 第i行0元素的个数之和D 第i列0元素的个数之和二、判断题20分1.调用一次深度优先遍历可以访问到图中的所有顶点;。
数据结构期末考试题及答案
数据结构期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。
A. 算法程序的长度B. 算法执行时所需要的基本运算次数C. 算法程序中的语句数D. 算法程序中的指令数答案:B2. 线性表的顺序存储结构和链式存储结构相比,其主要优点是()。
A. 插入和删除操作快B. 存储密度高C. 存储空间可以动态申请D. 存储空间可以预先分配答案:D3. 在一个长度为n的顺序表中,采用二分查找法查找第k小的元素,最坏情况下需要比较的次数是()。
A. nB. n/2C. log2(n+1)D. log2n答案:D4. 一个栈的入栈序列为1, 2, 3, 4, 5,下列序列中哪一个不可能是栈的输出序列()。
A. 5, 4, 3, 2, 1B. 3, 2, 4, 1, 5C. 5, 4, 2, 3, 1D. 1, 2, 5, 3, 4答案:D5. 在二叉树的前序遍历、中序遍历和后序遍历中,根节点总是()。
A. 第一个被访问B. 第二个被访问C. 第三个被访问D. 最后一个被访问答案:A6. 在一个有n个顶点的无向图中,其边的最大数量是()。
A. n(n-1)/2B. n(n+1)/2C. n^2D. 2n答案:A7. 哈夫曼编码是一种()。
A. 静态编码B. 动态编码C. 无损编码D. 有损编码答案:C8. 一个图的邻接矩阵表示法中,若顶点i到顶点j有一条边,则矩阵的第i行第j列的元素为()。
A. 1B. 0C. 边的权重D. 顶点j的度数答案:C9. 在数据库中,关系模式R(U, F),其中U={A, B, C, D},F={(A, B)→C, C→D},下列哪个关系模式是R的候选键()。
A. {A, B}B. {A, C}C. {B, C}D. {C, D}答案:A10. 快速排序算法的平均时间复杂度是()。
A. O(n^2)B. O(nlogn)C. O(n^3)D. O(n)答案:B二、填空题(每题2分,共20分)1. 在数据结构中,递归算法的时间复杂度通常可以用______来描述。
数据结构期末考试题及答案
数据结构期末考试题及答案一、单项选择题(每题3分,共30分)1. 在数据结构中,最基本的数据结构是()。
A. 线性结构B. 树形结构C. 图形结构D. 非线性结构答案:A2. 栈是一种特殊的线性表,其特点是()。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C3. 在二叉树中,度为2的结点数为n,度为1的结点数为m,度为0的结点数为p,则m的值为()。
A. n-1B. n+1C. p-1D. p+1答案:A4. 哈希表的构造方式是()。
A. 线性结构B. 树形结构C. 链式结构D. 索引结构答案:D5. 在图的遍历过程中,深度优先搜索算法采用的是()。
A. 队列B. 栈C. 链表D. 树答案:B6. 快速排序算法的时间复杂度在最坏情况下是()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(2^n)答案:C7. 以下哪个排序算法是不稳定的排序算法()。
A. 冒泡排序B. 快速排序C. 归并排序D. 堆排序答案:B8. 在数据库中,索引通常采用哪种数据结构()。
A. 线性表B. 树形结构C. 图形结构D. 散列表答案:B9. 以下哪个不是二叉搜索树的性质()。
A. 左子树上所有结点的值都小于它的根结点的值B. 右子树上所有结点的值都大于它的根结点的值C. 左、右子树也分别为二叉搜索树D. 所有结点的值都相等答案:D10. 在图的表示方法中,邻接矩阵适用于表示()。
A. 稠密图B. 稀疏图C. 有向图D. 无向图答案:A二、填空题(每题4分,共20分)1. 在数据结构中,一个算法的空间复杂度是指算法在执行过程中需要的___________。
答案:存储空间2. 堆排序中,调整堆的过程称为___________。
答案:堆化3. 在图的遍历中,广度优先搜索使用的辅助数据结构是___________。
答案:队列4. 一个长度为n的链表,删除第i个元素的时间复杂度是___________。
数据结构试题(含答案)
数据结构试题(含答案)数据结构试题(含答案)一、选择题1. 数据结构是计算机科学中的一个重要概念。
下列选项中,不属于数据结构的是:A. 数组B. 栈C. 数据库D. 链表答案:C2. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。
下列操作中,不属于栈的是:A. 入栈B. 出栈C. 遍历D. 清空栈答案:C3. 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。
下列选项中,不属于链表的是:A. 单链表B. 双链表C. 循环链表D. 二叉树答案:D4. 哈希表(Hash Table)是一种根据关键码直接访问存储位置的数据结构。
下列选项中,不属于哈希表的优点是:A. 快速查找B. 插入和删除操作效率高C. 数据无序D. 冲突较少答案:C二、填空题1. 树(Tree)是一种非线性数据结构,它由一组以边连接的节点组成。
树中每个节点最多可以有________个子节点。
答案:无限制/任意个2. 图(Graph)是由节点和连接节点的边组成的数据结构。
图中节点的度是指与该节点相连接的边的________。
答案:数量3. 广度优先搜索(BFS)和深度优先搜索(DFS)是常用的图遍历算法。
在BFS中,使用________结构来保存待访问的节点。
答案:队列4. 在二叉搜索树(Binary Search Tree)中,左子树中的每个节点的值都小于根节点的值,右子树中的每个节点的值都大于根节点的值。
这种特性称为_______________。
答案:二叉搜索树性质三、简答题1. 请简要说明线性数据结构和非线性数据结构的区别。
答案:线性数据结构是指数据元素之间存在一对一的线性关系,例如数组、栈、队列等;而非线性数据结构是指数据元素之间存在一对多或多对多的关系,例如树、图等。
线性数据结构的存储方式是连续的,非线性数据结构的存储方式是离散的。
数据结构期末考试题及答案
数据结构期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是()。
A. 元素之间存在一对一关系B. 元素之间存在一对多关系C. 元素之间存在多对多关系D. 元素之间存在一对一对关系答案:A2. 栈(Stack)是一种特殊的线性表,其特点是()。
A. 只能在一端进行插入和删除操作B. 只能在一端进行插入操作,另一端进行删除操作C. 两端都可以进行插入和删除操作D. 只能在一端进行删除操作答案:B3. 在二叉树中,若某结点的左子树非空,则其左子树中任一结点的值()。
A. 小于该结点的值B. 大于该结点的值C. 等于该结点的值D. 与该结点的值无关答案:A4. 哈希表的冲突解决方法中,开放定址法的基本思想是()。
A. 将发生冲突的元素插入到表的末尾B. 将发生冲突的元素插入到表的首部C. 将发生冲突的元素插入到表的任意位置D. 将发生冲突的元素插入到表的下一个空位答案:D5. 快速排序算法的时间复杂度在最坏情况下是()。
A. O(nlogn)B. O(n^2)C. O(n)D. O(1)答案:B6. 归并排序算法的时间复杂度是()。
A. O(nlogn)B. O(n^2)C. O(n)D. O(1)答案:A7. 在图的遍历中,深度优先搜索(DFS)使用的是()。
A. 队列B. 栈C. 链表D. 数组答案:B8. 广度优先搜索(BFS)使用的是()。
A. 队列B. 栈C. 链表D. 数组答案:A9. 在图的表示方法中,邻接矩阵适用于表示()。
A. 稀疏图B. 稠密图C. 无向图D. 有向图答案:B10. 最小生成树的Kruskal算法中,边的选取是基于()。
A. 边的权重B. 边的编号C. 边的长度D. 边的类型答案:A二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的空间复杂度是指算法执行过程中需要的___________。
答案:存储空间的大小2. 顺序表的存储结构是使用___________连续的存储单元依次存储数据元素。
大学数据结构期末考试试题(有答案)
大学数据结构期末考试试题(有答案)大学数据结构期末考试试题(有答案)题一:单项选择题(共10题,每题2分,共20分)1. 数据结构是一种()。
A. 算法B. 数据的存储结构C. 编程语言D. 操作系统答案:B2. 下列哪个不属于线性结构?A. 数组B. 栈C. 队列D. 树答案:D3. 栈是()的一种典型应用。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C4. 链表与数组的主要区别是()。
A. 链表是动态分配的,数组是静态分配的B. 链表只能存储整数,数组可以存储任意类型的数据C. 链表的访问速度比数组快D. 链表的插入和删除操作比数组快答案:A5. 在二分查找算法中,查找元素的平均时间复杂度是()。
A. O(n)B. O(logn)C. O(n^2)D. O(1)答案:B6. 以下哪种排序算法不是稳定的?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:B7. 平衡二叉树的插入和删除操作的时间复杂度都是()。
A. O(n)B. O(logn)C. O(n^2)D. O(1)答案:B8. 哈希表是通过()实现的。
A. 数组B. 链表C. 树D. 图答案:A9. 拓扑排序是一种用来解决()问题的算法。
A. 最短路径B. 最小生成树C. 最大流D. 有向无环图的排序答案:D10. 图的深度优先遍历算法使用()来实现。
A. 栈B. 队列C. 数组D. 链表答案:A题二:填空题(共5题,每题4分,共20分)1. 顺序表中元素的逻辑顺序与物理位置相同,插入和删除操作会引起元素的()。
答案:移动位置2. 在树的孩子兄弟表示法中,每个结点有两个指针,一个指向它的(),一个指向它的()。
答案:第一个孩子,下一个兄弟3. 哈希表的存储时间和查找时间都为()。
答案:O(1)4. 无向连通图的最小生成树边数为()。
答案:n-1(n为结点个数)5. 平衡二叉树的定义是任意结点的左子树和右子树的高度差不超过()。
数据结构的试题及答案
数据结构的试题及答案一、选择题(每题2分,共10分)1. 在数据结构中,()是数据元素之间的相互关系的集合。
A. 数据B. 结构C. 存储结构D. 逻辑结构答案:D2. 线性表的顺序存储结构中,存储元素的物理位置是()。
A. 连续的B. 离散的C. 任意的D. 无关的答案:A3. 在二叉树的遍历方法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。
A. 前序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法中,()是将所有发生冲突的元素存储在同一个链表中。
A. 线性探测B. 链地址法C. 再散列D. 双散列答案:B5. 在图的遍历算法中,深度优先搜索(DFS)算法使用的辅助数据结构是()。
A. 栈B. 队列C. 链表D. 数组答案:A二、填空题(每题2分,共10分)1. 在数据结构中,算法的时间复杂度通常用()表示。
答案:O(n)2. 一个栈的初始状态为空,依次执行了Push(1), Push(2), Pop(), Push(3), Pop()操作后,栈顶元素是()。
答案:13. 在二叉搜索树中,对于任意节点,其左子树中的所有值都()该节点的值。
答案:小于4. 哈希表的装载因子是表中已填入的元素个数与哈希表的()之比。
答案:总容量5. 图的邻接矩阵表示法中,如果两个顶点之间有边相连,则对应的矩阵元素值为()。
答案:1三、简答题(每题5分,共20分)1. 请简述什么是递归,并给出一个递归算法的例子。
答案:递归是一种算法设计技巧,它允许一个函数直接或间接地调用自身。
递归算法的例子是计算阶乘:n! = n * (n-1)!,其中n! = 1当n=0时。
2. 请解释什么是堆排序,并简述其基本步骤。
答案:堆排序是一种基于堆数据结构的比较排序算法。
基本步骤包括构建最大堆,然后重复移除堆顶元素并调整剩余元素以保持最大堆属性。
3. 请描述什么是图的广度优先搜索(BFS)算法,并给出其算法步骤。
数据结构本科试题及答案
数据结构本科试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,以下哪个选项是线性结构的特点?A. 有且仅有一个根节点B. 有且仅有一个首元素和一个末元素C. 元素之间存在一对一的对应关系D. 元素之间存在一对多的对应关系答案:C2. 以下哪个算法不是排序算法?A. 冒泡排序B. 快速排序C. 深度优先搜索D. 选择排序答案:C3. 在二叉树中,以下哪个操作不是基本操作?A. 查找B. 插入C. 删除D. 反转答案:D4. 以下哪个数据结构不是非线性结构?A. 链表B. 树C. 图D. 数组答案:D5. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 队列B. 栈C. 树D. 集合答案:B6. 哈希表解决冲突的方法之一是开放定址法,其基本思想是什么?A. 将冲突的元素存储在其他位置B. 将冲突的元素删除C. 将冲突的元素存储在数组的末尾D. 将冲突的元素存储在数组的开头答案:A7. 以下哪个算法不是图的遍历算法?A. 深度优先搜索B. 广度优先搜索C. 迪杰斯特拉算法D. 快速排序答案:D8. 在二叉搜索树中,以下哪个操作的时间复杂度不是O(log n)?A. 查找B. 插入C. 删除D. 打印所有元素答案:D9. 以下哪个不是堆的性质?A. 每个节点的值都大于其子节点的值B. 可以是完全二叉树C. 可以是二叉搜索树D. 可以是最小堆或最大堆答案:C10. 在数据库中,以下哪个操作不是关系代数的基本操作?A. 选择B. 投影C. 连接D. 排序答案:D二、多项选择题(每题3分,共15分)1. 下列哪些是图的存储结构?A. 邻接矩阵B. 邻接表C. 树D. 链表答案:A B2. 在数据结构中,以下哪些是动态数据结构?A. 数组B. 链表C. 栈D. 队列答案:B C D3. 以下哪些算法是时间复杂度为O(n)的?A. 线性查找B. 插入排序C. 归并排序D. 快速排序答案:A4. 在数据库中,以下哪些是关系数据库的完整性约束?A. 实体完整性B. 参照完整性C. 用户定义完整性D. 索引完整性答案:A B C5. 以下哪些是图的遍历算法?A. 深度优先搜索B. 广度优先搜索C. 哈希排序D. 堆排序答案:A B三、简答题(每题5分,共20分)1. 请简述链表和数组的区别。
数据结构考试题库及答案
数据结构考试题库及答案一、选择题1. 下列哪个不是线性结构?A. 栈B. 队列C. 双向链表D. 树答案:D2. 在顺序存储结构中,数据元素的物理位置与逻辑位置相同的是哪种结构?A. 栈B. 队列C. 线性表D. 树答案:C3. 下列哪种排序算法的时间复杂度是O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C4. 在二叉树中,度为0的节点称为()。
A. 根节点B. 内节点C. 叶子节点D. 父节点答案:C5. 下列哪种图的邻接矩阵是对称的?A. 有向图B. 无向图C. 有向连通图D. 无向连通图答案:B二、填空题6. 在链表中的每个节点至少包含两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。
7. 在顺序表中,元素之间的逻辑关系是由它们的相对位置来体现的。
8. 快速排序的基本思想是:在待排序序列中选取一个基准元素,将序列中所有小于基准元素的元素放在基准元素前面,所有大于基准元素的元素放在基准元素后面。
9. 图中的每个节点称为顶点,顶点之间的连线称为边。
10. 在哈希表中,哈希函数的目的是将关键字映射到散列地址。
三、判断题11. 在顺序表中插入一个元素的时间复杂度为O(1)。
()答案:错误。
插入一个元素的时间复杂度为O(n),因为可能需要移动其他元素。
12. 在链表中删除一个元素的时间复杂度为O(n)。
()答案:错误。
删除一个元素的时间复杂度为O(1),只要找到该元素的前一个节点即可。
13. 二分查找只适用于有序的顺序表。
()答案:正确。
14. 在二叉树中,任意节点的度数不会超过2。
()答案:正确。
15. 图的邻接表表示法比邻接矩阵表示法更加节省空间。
()答案:正确。
四、应用题16. 请用C语言实现一个顺序栈的数据结构,并给出入栈、出栈和判断栈空的操作。
答案:```c#define MAXSIZE 100typedef struct {int data[MAXSIZE];int top;} SeqStack;// 初始化栈void InitStack(SeqStack s) {s->top = -1;}// 判断栈是否为空int StackEmpty(SeqStack s) {return s->top == -1;}// 入栈int Push(SeqStack s, int x) {if (s->top == MAXSIZE - 1) {return 0; // 栈满}s->data[++s->top] = x;return 1;}// 出栈int Pop(SeqStack s, int x) {if (s->top == -1) {return 0; // 栈空}x = s->data[s->top--];return 1;}```17. 请简述二分查找的基本思想。
2023年7月国开电大本科《数据结构》期末考试试题及答案
2023年7月国开电大本科《数据结构》期末考试试题及答案试题部分1. 请简述数据结构的定义及其作用。
2. 什么是栈和队列?请分别描述它们的特点和应用场景。
3. 字符串是一种常见的数据类型,请列举至少两种常见的字符串操作方法,并解释它们的作用。
4. 请说明二叉树的定义和特点,并给出一个二叉树的示例。
5. 简要描述图的基本概念,并给出一个使用邻接矩阵表示图的例子。
6. 请解释深度优先搜索(DFS)和广度优先搜索(BFS)算法的原理,并说明它们在图的遍历中的应用。
7. 树的遍历是指按照一定顺序访问树中的所有节点。
请解释前序遍历、中序遍历和后序遍历的概念。
8. 请解释散列函数的作用和原理,并说明散列表在实际中的应用。
9. 简要介绍至少两种排序算法,并分别说明它们的时间复杂度。
10. 简述动态规划算法的原理及应用场景。
答案部分1. 数据结构是指数据元素之间的关系,以及对数据元素的操作。
它的作用是组织和存储数据,以便高效地访问和操作。
2. 栈是一种只能在一端进行插入和删除操作的线性数据结构,特点是后进先出(LIFO)。
它常用于括号匹配、表达式求值等场景。
队列是一种只能在一端插入,在另一端删除的线性数据结构,特点是先进先出(FIFO)。
它常用于任务调度、缓存管理等场景。
3. 常见的字符串操作方法包括字符串连接、子串查找。
字符串连接用于将两个字符串合并为一个字符串。
子串查找用于在一个字符串中找到特定子串的位置或判断子串是否存在。
4. 二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。
它的特点是具有递归的结构,可以用于实现排序、查找等功能。
例如,下图是一个二叉树的示例:A/ \B C/ \D E5. 图是由节点和边组成的一种数据结构,节点表示实体,边表示节点之间的关系。
邻接矩阵可以用于表示图结构,矩阵的行和列分别表示节点,矩阵中的值表示节点之间的关系。
例如,下面是一个使用邻接矩阵表示的图的例子:| A | B | C |--|---|---|---|A| 0 | 1 | 1 |B| 1 | 0 | 1 |C| 1 | 1 | 0 |6. 深度优先搜索(DFS)和广度优先搜索(BFS)是图的遍历算法。
数据结构考试题库与参考答案
数据结构考试题库与参考答案一、选择题1.1 单选题题目: 下列哪种数据结构是线性结构?A. 树B. 图C. 栈D. 队列参考答案: C解析: 栈和队列都是线性结构,而树和图是非线性结构。
1.2 多选题题目: 下列哪些操作的时间复杂度是 O(1)?A. 在数组中插入一个元素B. 在链表中删除一个元素C. 访问链表中的一个元素D. 在树中删除一个节点参考答案: B, C解析: 在链表中删除和访问元素的时间复杂度是 O(1),因为这两个操作只需要遍历链表一次。
在数组中插入或删除元素的时间复杂度是 O(n),因为在数组中移动元素需要遍历整个数组。
在树中删除一个节点的时间复杂度取决于树的形状,最坏情况下是 O(n)。
二、填空题题目: 栈是一种后进先出(LIFO)的数据结构,它是一种特殊的线性表,它的特点是只能在表的_____进行插入和删除操作。
参考答案: 尾部解析: 栈是一种只能在表的一端进行插入和删除操作的线性表,这一端被称为栈顶。
三、判断题题目: 链表比数组更适合进行频繁的插入和删除操作。
参考答案: 正确解析: 链表的每个节点只存储数据和一个指向下一个节点的指针,因此在链表中插入或删除元素只需要改变节点的指针,不需要移动其他元素,时间复杂度是 O(1)。
而数组需要移动其他元素,时间复杂度是 O(n)。
四、简答题题目: 请简要介绍队列的特点和应用场景。
参考答案: 队列是一种先进先出(FIFO)的数据结构,它的特点是插入操作在队列的一端进行,删除操作在队列的另一端进行。
队列的应用场景包括: 1) 实现打印队列; 2) 实现消息队列; 3) 实现缓冲区。
解析: 队列的特点和应用场景是数据结构中的基本概念,需要掌握。
五、编程题题目: 实现一个栈类,包括 push 和 pop 操作。
参考答案:class Stack:def __init__(self):self.items = []def push(self, item):self.items.append(item)def pop(self):if not self.is_empty():return self.items.pop()else:raise IndexError("pop from empty stack")def is_empty(self):return len(self.items) == 0解析: 栈是一种只能在表的一端进行插入和删除操作的线性表,这一端被称为栈顶。
数据结构考试专用附带完整答案
数据结构考试专用附带完整答案数据结构是计算机科学中重要的一门基础课程,它研究的是组织和管理数据的方法。
在计算机程序设计和算法分析中,数据结构的选择直接影响到程序的效率和性能。
因此,对于计算机科学专业的学生来说,掌握数据结构并获得优异的成绩至关重要。
本文将为您提供数据结构考试专用附带完整答案,以帮助您更好地备考。
一、选择题1. 在数据结构中,最基本的数据操作是:A. 插入B. 查找C. 删除D. 以上皆是答案:D2. 以下不属于线性结构的是:A. 数组B. 链表C. 栈D. 树3. 以下哪种数据结构具有"先进先出"的特点:A. 队列B. 栈C. 堆D. 数组答案:A4. 在树的遍历算法中,中序遍历的顺序是:A. 根节点-左子树-右子树B. 左子树-根节点-右子树C. 右子树-左子树-根节点D. 根节点-右子树-左子树答案:B5. 哈希表(散列表)的查找时间复杂度是:A. O(1)B. O(n)C. O(log n)D. O(n^2)二、填空题1. 二叉树的最大深度是____。
答案:log2(n+1)2. 链表的节点包括数据域和____域。
答案:指针/引用3. 栈的特点是先进后出,而队列的特点是____。
答案:先进先出4. 快速排序使用的分治策略中,选择的枢纽元一般是____。
答案:数组的第一个元素5. 广度优先搜索算法(BFS)利用____数据结构实现。
答案:队列三、简答题1. 请简要说明数组和链表的区别。
答案:数组和链表都是线性表的一种实现方式。
数组是一块连续的内存空间,可以根据索引快速访问元素,但插入和删除元素的效率较低。
链表通过指针将节点串联在一起,插入和删除元素的效率较高,但访问元素需要从头开始遍历链表,效率较低。
2. 请简述栈和队列的应用场景。
答案:栈常用于括号匹配、表达式求值和函数调用等场景,其中最典型的应用是函数调用的调用栈。
队列常用于任务调度、缓冲区管理等场景,例如操作系统中的进程调度和打印队列。
数据结构本科试题及答案
数据结构本科试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性结构和非线性结构的划分依据是()。
A. 结构的形状B. 是否有分支C. 是否有子结构D. 是否有层次关系2. 线性表的顺序存储结构和链式存储结构相比,其优点是()。
A. 插入和删除操作快B. 存储密度高C. 存储空间可以动态分配D. 存储空间利用率高3. 在二叉树的遍历中,先序遍历的顺序是()。
A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左4. 哈希表解决冲突的方法不包括()。
A. 分离链接法B. 开放定址法C. 链地址法D. 顺序存储法5. 在图的遍历中,深度优先搜索(DFS)算法使用的是()。
A. 栈B. 队列C. 链表D. 数组6. 快速排序算法的时间复杂度在最坏情况下是()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(2^n)7. 以下哪个排序算法是稳定的()。
A. 快速排序B. 堆排序C. 归并排序D. 选择排序8. 一个有n个顶点的无向图中,其边的最大数量是()。
A. n(n-1)/2B. n(n+1)/2C. n^2D. 2n9. 以下哪个数据结构适用于实现稀疏矩阵()。
A. 顺序存储B. 链式存储C. 压缩存储D. 散列存储10. 以下哪个算法不是动态查找算法()。
A. 二分查找B. 顺序查找C. 斐波那契查找D. 平衡二叉树查找答案:1. B2. B3. A4. D5. A6. C7. C8. A9. C10. B二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的时间复杂度是指算法执行过程中所需要的基本操作的______与输入数据量之间的关系。
2. 一个长度为n的线性表采用顺序存储结构时,其最后一个元素的存储地址为LOC(n),则第i个元素的存储地址LOC(i)为______。
3. 堆是一种特殊的完全二叉树,其中每个父节点的值都______其子节点的值(填“大于”或“小于”)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论《》1、填空题1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。
2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。
3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。
2、应用题1、给出以下算法的时间复杂度.void fun(int n){int i=1,k=100;while(i<n){k=k+1;i=i+2;}}时间复杂度为____O(n)_____。
2、给出以下算法的时间复杂度.void fun2(int n){int i=1,k=100;while(i<n){i=i*10;k=k+1;}}时间复杂度为____O(log n)___________。
第2章线性表1、填空题1. 线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___链___表。
2.顺序表采用__随机___访问机制对数据元素进行访问。
3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:①____s->next=p->next_____________;②____p->next=s___________________;4.在单向链表中,若要删除某个结点p,一般要找到__p的前趋__结点,才能实现该操作。
2、选择题1.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是A。
(A)n (B)2n-1 (C)2n (D)n-12.在单链表中,如果在结点p之后插入一个新结点s,其操作为 A 。
(A)s->next=p->next; p->next=s;(B)p->next=s; s->next=p->next;(C)s->next=p; p->next=s->next;(D)p->next=s; s->next=p;3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为( C )。
(1≤i≤n)A.O(0) B.O(1) C.O(n) D.O(n2)4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为( B )。
(1≤i≤n+1)A.n-i B.n-i+1 C. i D.n-i-13、判断题1.线性表中每一个元素都有一个前驱和一个后继。
(×)4、程序设计题1、单链表的结点结构定义如下:struct LinkNode{LinkNode *next;int data;};请根据述函数的功能写程序。
void Insert(LinkNode *h,LinkNode *s){//h指向链表的头结点(即使链表中没有元素,头结点也存在。
)//链表中元素已经递增有序//函数功能为将结点s插入到链表h中。
插入后链表仍然保持递增的顺序LinkNode *p,*q;//q指向p的前驱q=h;p=h->next;while(p){if(p->data>s->data){//寻找到插入点位置,插入sq->next=s;s->next=p;return;}else{q=p; (1分)p=p->next; (1分)}}//当表中没有比s大的结点时,插入到表尾s->next=q->next; (2分)q->next=s; (2分)}2、设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。
顺序表的结构定义如下:#define ListSize 100 // 假定表空间大小为100struct SqList {int elem[ListSize]; // 数组elem用于存放表中的数据int length; // 当前的表长度};//以上为顺序表的结构//函数头定义如下void InsertIncreaseList( SqList &L ,int x ){ int i;if ( L.length>=ListSize) cout<<”OVERFLOW”;//判断是否溢出for ( i=L.length ; i>0 && L.elem[ i-1 ] > x ; i--)L.elem[ i ]=L.elem[ i-1 ] ; // 比较并移动元素L.elem[ i ] =x; //插入xL.length++; //表长增1}///////3、单链表中结点的结构如下所示:typedef struct node{ int data;struct node *next;}node;请设计满足下述功能的函数。
要求:建立带头结点的单链表H,要求函数从屏幕上读入m个整数,每读入一个,便生成相应的结点,并且把它插入到链表H的尾部。
函数形式为void CreateLinkList(node *H)。
参考程序:void CreateList(node *H){//H指向头指针int m,temp;cout<<"输入数据的个数:";cin>>m;//int i=1;node *tail;H->next=NULL;tail=H;while(i<=m){cout<<"please input your number:"<<endl;cin>>temp;node *t=new node ;t->data=temp;t->next=tail->next;tail->next=t;tail=t;i++;}第3章栈和队列1、填空题1.栈和队列在本质上都是___线性表__________。
2.栈的操作特点是__后进先出_。
队列的操作特点是_先进先出__。
2、选择题1.消除递归不一定需要使用栈,此说法___A____。
A. 正确B. 错误2.对于栈,输入序列为(1,2,3,4),不可能得到的输出序列有__D_____。
(A)(1,2,3,4)(B)(4,3,2,1)(C)(1,3,4,2)(D)(3,1,2,4)3.用单循环链表表示队列,正确的说法是B。
(A)可设一个头指针使入队、出队都方便;(B)可设一个尾指针使入队、出队都方便;(C)必须设头尾指针才能使入队、出队都方便;(D)无论如何,只可能使入队方便。
3、判断题1.栈的特点是先进先出。
(×)2.可以在队列的任意位置插入元素。
(×)3.递归程序化非递归程序必须用到栈。
(×)4.如果进栈的序列为(1,2,3,4),则(4,2,3,1)不可能是出栈序列。
(√)5.在用顺序表表示的循环队列中,可用标志位来区分队空或队满的条件。
(√)第4章串1、选择题1. 设有两个串p和q,求q在p中首次出现的位置的运算称作(B)A.连接 B.模式匹配 C.求子串 D.求串长2、判断题1.空串和空格串是同一个概念,二者没有区别。
(×)第5章数组和广义表1、填空题1.二维数组在内存中存储可以有两种存储方式,一种是___行__优先存储,一种是列优先存储。
2.设广义表L=((),(),(()))。
则head(L)是();tail(L)是((),(())) ;L的长度是3;L的深度是 3 。
3.设广义表L=((a),(b),((c))) 则head(L)是__(a)__;tail(L)是_((b),((c)))___。
2、选择题1.在C语言中,如果有数组定义 int A[8][9];假定每个整型数据占2字节,则数组元素A[4][4]的地址是(A)。
A. A+80B. A+76C.A+82D.以上都不对2.广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为( D );Head(Tail(Head(Tail(Tail(A)))))A.(g) B.(d) C.c D.d3、判断题1.在C语言中,多维数组的存储采取的是行优先的方式。
(√)2.广义表在本质上也是线性表。
(×)3.可以用三元组存储法来压缩存储稀疏矩阵。
(√)4.已知广义表A=((a,b,c),(d,e,f)),从A中取出原子e的运算是head(tail(head(tail(A))))。
( √ )第6章树和二叉树1、填空题1.一棵62个叶结点的完全二叉树,最多有___62*2=124______个结点。
2.若规定仅有根的二叉树的高度为1,那么高为h的完全二叉树最多有-____2^h-1___________个结点,最少有___2^(h-1)______个结点。
3.设只包含有根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为-____2^(k+1)-1____________,最小结点数为____k+1____________。
4.设仅包含根结点的二叉树的高度为1,则高度为k的二叉树的最大结点数为-_______2^k-1_________,最小结点数为____k______。
2、选择题1.具有N个结点的完全二叉树的深度是__B______。
(A)⌊ log2N ⌋(B)⌊ log2N ⌋+1(C)⌊ log2(N) ⌋(D)⌊ log2N ⌋-12.设二叉树的树根为第一层,则第i层上至多有__C_____结点。
(A)1 (B)2 (C)2i-1 (D)2i-13、判断题1.二叉树的左右子树次序是严格的,不能够任意改变。
(√)2.若根为第一层,则深度为k的满二叉树的结点为2^k-1 。
(√)3.二叉树的三叉链表存储结构可以方便的访问到双亲结点。
(√)4、应用题1.在一段文字中,共出现a、b、c、d、e、f六种字符,每种字符出现的频率分别为7,9,12,22,23,27。
请回答下列问题:(1)什么是哈夫曼树?(3分)(2)根据题目所给频率值,画出相应的哈夫曼树。
(11分)(3)给出各个字符对应的哈夫曼编码。
(6分)(4)该段文字经过哈夫曼编码后,长度是多少。
(4分)参考答案如下:(1)答案为:带权路径长度最小的二叉树称为哈夫曼树。
(3分)(2)根据题目所给频率值,画出相应的哈夫曼树。
(11分,每个结点1分)(3)给出各个字符对应的哈夫曼编码。
(6分)a:1110 b:1111 c:110 d:00 e:01 f:10(4)该段文字经过哈夫曼编码后,长度是多少。
(4分)(7+9)*4+12*3+(22+23+27)*2=244或者100+45+55+28+16=244a b2. 设一棵二叉树的先序遍历序列为abcde,中序遍历序列为badce,请画出对应的二叉树,并写出对应后序遍历序列。