数据结构补考复习题

合集下载

《数据结构》复习题题库

《数据结构》复习题题库

一、单项选择题(本大题共71小题,每小题2分,共142分)1、一个对象序列的排序码为{46,79,56,38,40,84},采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为()。

()A.{38,46,79,56,40,84}B.{38,79,56,46,40,84}C.{40,38,46,56,79,84}D.{38,46,56,79,40,84}标准答案:C2、广义表((a),a)的表头是()。

()A.aB.bC.(a)D.((a))标准答案:C3、数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是()。

()A.80B.100C.240D.270标准答案:C4、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行()。

()A.HL=p;p->next=HL;B.p->next=HL;HL=p;C.p->next=HL;p=HL;D.p->next=HL->next;HL->next=p;标准答案:B5、一个具有n个顶点的无向完全图的边数为()。

()A.(n+1)/2B.n(n-1)/2C.n(n-1)D.n(n+1)标准答案:B6、如果待排序序列中两个数据元素具有相同的值,在排序后它们的位置发生颠倒,则称该排序是不稳定的。

下列选项中,()就是不稳定的排序方法。

()A.起泡排序B.归并排序C.直接插入法排序D.简单选择排序标准答案:D7、按照二叉树的定义,具有3个结点的二叉树有()种。

()A.3B.4C.5D.6标准答案:C8、设有1000个元素,用二分法查找时,最大比较次数是()。

()A.1B.7C.10D.25标准答案:C9、树适合用来表示()。

()A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据标准答案:C10、设有两个串p和q,求p在q中首次出现的位置的运算称作()。

数据结构复习题及答案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.设需要对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个元素的存储位置是。

数据结构复习题及答案

数据结构复习题及答案

数据结构复习题及答案一、选择题1. 在数据结构中,以下哪种数据结构允许在任何位置进行插入和删除操作?A. 栈B. 队列C. 链表D. 数组答案:C2. 以下哪个选项是二叉搜索树的特性?A. 所有左子树的节点值小于根节点值B. 所有右子树的节点值大于根节点值C. 所有左子树的节点值大于根节点值D. 所有右子树的节点值小于根节点值答案:A3. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 栈B. 队列C. 链表D. 数组答案:A二、填空题1. 在一个有n个节点的完全二叉树中,如果节点按层次从上到下、从左到右编号为1, 2, 3, ..., n,则第i个节点的左孩子节点的编号为____。

答案:2i2. 哈希表解决冲突的一种方法是使用链地址法,其中每个哈希表项是一个____。

答案:链表3. 在图的表示方法中,邻接矩阵适合表示____图,邻接表适合表示____图。

答案:稠密;稀疏三、简答题1. 描述什么是递归,并给出一个简单的递归算法的例子。

答案:递归是一种在算法中调用自身的方法,用于解决可以分解为相似子问题的问题。

一个简单的递归算法例子是计算阶乘:n! = n * (n-1)!,其中基本情况是0! = 1。

2. 解释什么是图的广度优先搜索(BFS)算法,并说明其在哪些情况下适用。

答案:广度优先搜索(BFS)是一种遍历或搜索树或图的算法,它从根节点开始,逐层遍历节点。

BFS适用于寻找最短路径或在层次结构中按层次顺序访问节点的情况。

四、编程题1. 给定一个单链表,请编写一个函数来反转该链表。

答案:(此处省略具体代码实现,只提供解题思路)要反转一个单链表,可以创建一个新的链表头节点,然后遍历原链表,将每个节点的next指针指向前一个节点,直到链表末尾。

最后,将新链表的头节点设置为原链表的最后一个节点的前驱节点。

数据结构补考试题

数据结构补考试题

一. 填空题(请将答案写在下方的空格中,每题4分,共32分)1.下列是两个n ×n 的矩阵相乘的算法,求下列算法中@区域的时间频度为①,整个算法的时间复杂度为②。

•void Mult_matrix( int c[][], int a[][], int b[][],int n){for (i=1; i<=n; ++i)for (j=1; j<=n; ++j){c[i,j] = 0;for (k=1; k<=n; ++k)@ c[i,j] += a[i,k]*b[k,j];}}2.已知n阶三对角矩阵B,则B中的非零元素的个数为③,现采用以行序为主序的方式将B压缩存储到一个一维数组A[ ]中,则B中任意一个非零元素b ij与A[k]之间的对应关系为④。

3.已知S1=‘GUANGXI_GUANGDONG’,S2=’XI’,则函数INDEX(S1,S2)的运行结果为⑤。

4.已知一棵二叉树的前序扫描序列和中序扫描序列分别为ABCDEFGHIJ,BCDAFEHJIG,则该二叉树的后序序列为⑥。

5.下列是在线性链表中由指针q指出的链结点后面插入一个数据信息item的链结点的算法,在空格处输入代码,实现程序的功能。

Void INSERTERLINK(LinkList&list,LinkList q,ElemType item){ LinkList p;p=( LinkList)malloc(sizeof(LNode));p->data=item;if(list==NULL){ list=p;p->link=NULL;}Else{ ⑦;⑧;}}二. 简答题(按照要求完成下列各题)1.已知一元多项式f(x)=4x9-5x4+7x2-1 ,请写出用一维数组表示f(x)(选用较为节省空间的方法)。

(10分)2.已知K=(6,11,6,23,18,13,19,5),构造一棵二叉排序树。

数据结构复习题整理(答案)

数据结构复习题整理(答案)

数据结构复习题整理(答案)一、单选题1)下列操作系统中,交互性最强的是( )A、批处理系统B、分时系统C、实时系统D、网络操作系统2)在虚分页存储管理系统中,凡未装入过的页面都应从()调入内存A、交换区B、文件区C、系统区D、页面缓冲区3)某系统N个进程共享6台打印机,每个进程需要2台,则N的最大值不超过()时,系统一定不死锁。

A、3B、4C、5D、64)二叉树共有几种基本形态( C )A、3B、4C、5D、65)不带头结点的单链表头指针为head,判断该链表为空的条件是( A )A、head==NULL B、head->next==NULLC、head !=NULLD、head->next !=NULL6)树可以用集合{(x, y)| 结点x是结点y的双亲}表示,如果T={(b,d),(a,b),(c,e),(c,g),(c,f),(a,c),(e,h)},则树T的叶子结点的个数是(d )A、1B、2C、3D、47)下列哪种数据结构中,元素之间的关系是多对多关系( d)A、线性表B、树C、森林D、无向图8)P、V操作是()A、两条低级通信原语B、两条高级通信原语C、两组不同的机器指令D、两条系统调用命令9)下列进程状态转换,不可能发生的是()A、执行->就绪B、阻塞->执行C、阻塞->就绪D、执行->阻塞二、算法题1头插法建立单链表具体算法:LinkList CreatListF(void){//头插法建立单链表DataType ch;LinkList head;ListNode *s;head=NULL;printf("请输入链表各结点的数据(字符型):\n");while((ch=getchar())!='\n'){s=(ListNode *)malloc(sizeof(ListNode ));if(s==NULL){printf("申请存储空间失败!");return head;}s->data=ch; //输入的数据写入结点数据域s->next=head; //将新结点*s插入链表的前面head=s; //头指针指向新结点}return head;}2链表的删除具体算法:int DeleteList(LinkList head,int i){//链表的删除ListNode *p,*r;p=GetNode(head,i-1); //找到第i-1个结点if(!p ||!p->next) //!p与p==NULL等价,!p->next与p->next ==NULL等价{printf("未找到第%d个结点或第d%个结点不存在。

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

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

(完整版)数据结构复习题(附答案)⼀、算法设计题(每题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。

数据结构复习题

数据结构复习题

数据结构补考复习题一、单选题(每小题4分,共60分)1.计算机算法必须具备输入.输出.( B )等5个特性。

A.可行性.可移植性和可扩展性B.可行性.确定性和有穷性C.确定性.有穷性和稳定性D.易读性.安全性和稳定性2.树形结构是数据元素之间存在一种(D )。

A.一对一关系B.多对多关系C.多对一关系D.一对多关系3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度( C )。

A.O(log2n)B.O(1)C.O(n)D.O(n2)4.链表不具有的特点是( A )。

A.可随机访问任一元素B.插入删除不需要移动元素C.不必事先估计存储空间D.所需空间与线性表长度成正比5.栈的操作特点是( C )。

A.随机存取B.顺序存取C.先进后出D.先进先出6.队列的删除操作是在( B )。

A.队尾B.队头C.队列任意位置D.队头元素后7.下列表示方法中,( A )不常用来存储稀疏矩阵。

A.索引表B.三元组C.带行指针向量的链接存储D.十字链表8.广义表C=(a,(b,c,d)) 的长度是( A )。

A.2B.3C.4D.59.在一颗非空二叉树中,叶子节点的总数比度为2的节点总数多( C )个。

A.-1B.0C.1D.210.除第一层外,满二叉树中每一层结点个数是上一层结点个数的( C )。

A.1/2倍B.1倍C.2倍D.3倍二、选择题(每小题4分,共40分)1.数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的( B )和运算的学科。

A.结构B.关系C.运算D.算法2.为了描述n个人之间的同学关系,可用( C )结构表示。

A.线性表B.树C.图D.队列3.在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动( B )个元素。

A.n-iB.n-i+1C.n-i-1D.i4.从表中任一结点出发,都能扫描整个表的是( C )。

A.单链表B.顺序表C.循环链表D.静态链表5.队列的操作特点是( D )。

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

一、单项选择题(共30分,一题2分)
1.在n 个结点的顺序表中,算法的时间复杂度是O(1)的操作是( A )
A.访问第i 个结点(n i ≤≤1)和求第i 个结点的直接前驱(n i ≤≤2)
B.在第i 个结点后插入一个新结点(n i ≤≤1)
C.删除第i 个结点(n i ≤≤1)
D.将n 个结点从小到大排序 2.以下与数据的存储结构无关的术语是 ( C ) A.顺序队列 B.链表C.有序表 D.链栈 3.栈在(D )中有所应用
A.递归调用
B.函数调用
C.表达式求值
D. 3个选项都有
4.循环队列存储在数组A[2…m]中,则入队时的操作是( D )
A.rear=rear+1
B.raar=(rear+1)%m
C.rear=(rear+1)%(m+1)
D.rear=(rear+1)%(m-1)
5.在一个长度为n 的顺序表中,在第i 个元素(11+≤≤n i )之前插入一个新元素时需向后移动 ( B )个元素 A.n-i B.n-i+1 C.n-i-1 D.i
6.设栈S 和队列Q 的初始状态是空,元素e1,e2,e3,e4,e5,e6依次进入栈S ,一个元素出栈后即进入Q ,若6个元素出队序列是e2,e4,e3,e6,e5,e1,则栈S 的容量至少是( B ) A.2 B.3 C.4 D.6 7.串的长度是指( B )
A.串中所含不同字母的个数
B.串中所含字符的个数
C.串中所含不同字符的个数
D.串中所含非空格字符的个数 8.设高度为h 的二叉树上面只有度为0和度为2的结点,那么此类二叉树包含的结点数至少为( B ) A.2h B.2h-1 C.h+1 D.2h+1
9.根据使用频率,为5个字符设计的哈夫曼编码不可能是( C )
A.111,110,10,01,00
B.000,001,010,011,1
C.100,11,10,1,0
D.001,000,01,11,10
10.一组记录为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆是(B )
A. 79,46,56,38,40,84
B.84,79,56,38,40,46
C.84,79,56,46,40,38
D.84,56,79,40,46,38
11.一个栈的进栈序列是1,2,3,4,5,则栈的不可能的输出序列是( C )
A.5,4,3,2,1
B.2,1,5,4,3
C.4,3,1,2,5
D.2,3,5,4,1
12.采用线性探测法处理冲突的时候,需要探测多个位置,在查找成功的情况下,所探测的这些位置上的关键字( A ) A.不一定都是同义词(地址相同) B.一定都是同义词 C.一定都不是同义词 D.都相同 13.如果串S=’software’,其子串的个数是( B) A.37 B.36 C.8 D.9
14.设有数组A[i,j],数组的每个元素长度为3字节,i 的值为1~8,j 的值为1~10,数组从内存首地址BA 开始顺序存放,当用以行为主存放时,元素A[5,8]的存储首地址为( B ) A. BA+180 B. BA+141 C. BA+222 D. BA+234
15.在循环双链表的p 所指结点之后插入s 所指结点的操作是( C )
A.p→next=s;s→prior=p;p→next→prior=s;s→next=p→next
B. s→prior=p;s→next=p→next;p→next=s;p→next→prior=s
C.s→prior=p;s→next=p→next;p→next→prior=s;p→next=s
D. p→next=s;p→next→prior=s;s→prior=p;s→next=p→next
二、填空题(共30分,一空2分)
1.一个算法具有的特性是( 有穷性 ),(可行性 ),确定性,输入,输出。

2.深度和广度优先遍历类似于二叉树的( 先序遍历 )和(按层次遍历 )。

3.广义表((a,b,c,d))的表头是((a,b,c,d) ) ,表尾是( () ),长度是 ( 1 ),深度是( 2 )。

4. 二叉树有50个叶子结点,则该二叉树的总结点数至少是( 99 ) 。

5.深度是k 的完全二叉树的结点数至少是( 2k-1 ),至少是 ( 2k-1 )。

6.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( 1 )倍。

7.顺序查找n 个元素的顺序表,查找成功时,比较关键字次数最多是( n-1 )次,使用监视哨时,如果没有查找到,比较关键字的次数是( n )次。

8. 如果二叉树先序是ABDEGCF,中序是DBGEACF,他的后序是( DGEBFCA )。

三、程序设计题: 1、 设计计算二叉树结点个数的算法
#include"stdio.h" #define max 100
typedef char datatype; typedef struct bnode{ datatype data;
struct bnode *lchild,*rchild; }bnode,*btree;
void visit(datatype a){ putchar(a); }
void preorder(btree t){ if(t){ visit(t->data); preorder(t->lchild); preorder(t->rchild); } }
int count(btree t){ int lcount,rcount;
if(t==NULL) return 0; else{ lcount=count(t->lchild); rcount=count(t->rchild);
return lcount+rcount+1;
}
}
2、计算二叉树的高度
#include"stdio.h"
#define max 100
typedef char datatype;
typedef struct bnode{
datatype data;
struct bnode *lchild,*rchild;
}bnode,*btree;
void visit(datatype a){
putchar(a);
}
void preorder(btree t){
if(t){
visit(t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
int height(btree t){
int h1,h2;
if(t==NULL) return 0;
else{
h1=height(t->lchild);
h2=height(t->rchild);
if(h1>h2) return h1+1;
else return h2+1;
}
}
3、求解二叉树每层结点个数
#include"stdio.h"
#define max 100
typedef char datatype;
typedef struct bnode{
datatype data;
struct bnode *lchild,*rchild;
}bnode,*btree;
int height(btree t){
int h1,h2;
if(t==NULL) return 0;
else{
h1=height(t->lchild);
h2=height(t->rchild);
if(h1>h2) return h1+1;
else return h2+1;
}
}
void visit(datatype a){
putchar(a);
}
void preorder(btree t){
if(t){
visit(t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
int evcount(btree t,int l,int num[]){
if(t){
visit(t->data);num[l]++;
evcount(t->lchild,l+1,num);
evcount(t->rchild,l+1,num);
}
}
3.给定了关键字序列(26,25,36,33,20,31,21,45,202,209,42,38,29,44)使用哈希表进行存储。

(1)给出除留余数法的哈希函数。

(2)使用开放地址线性探测法解决冲突,并且画出插入所有关键字后得到的哈希表,并给出冲突的次数。

答:(1)Hash(key)=key%17;
书上149页的线索二叉树,图a细看!!!。

相关文档
最新文档