2012年1月数据结构导论试题与答案
数据结构试题及答案

数据结构试题及答案一、选择题1. 下列哪项不是线性结构的特点?A. 有且只有一个根节点B. 每个节点最多有一个前驱和一个后继C. 至少有一个节点D. 每个节点最多有一个前驱和多个后继答案:D解析:线性结构的特点包括有且只有一个根节点、每个节点最多有一个前驱和一个后继、至少有一个节点。
选项D描述的是非线性结构的特点。
2. 在单链表中,增加一个头节点的作用是()A. 便于首元节点的插入和删除操作B. 便于首元节点的访问C. 便于链表的操作D. 便于链表的删除答案:A解析:在单链表中,增加一个头节点可以使得首元节点的插入和删除操作更加方便,避免了首元节点特殊情况的处理。
3. 下面哪一个不是栈的基本运算?A. 入栈B. 出栈C. 初始化栈D. 求栈顶元素答案:C解析:栈的基本运算包括入栈、出栈、求栈顶元素和判断栈空。
初始化栈是创建栈的过程,不属于基本运算。
二、填空题4. 在顺序表中,元素之间的逻辑关系是由_______表示的。
答案:物理位置解析:顺序表中,元素之间的逻辑关系是通过物理位置来表示的。
每个元素在内存中占据连续的存储空间。
5. 设栈S的初始状态为空。
若元素序列为ABCDEF,当元素序列的进栈和退栈操作交叉进行时,下列序列中不可能出现在栈S中的是_______。
答案:BACF解析:当元素序列的进栈和退栈操作交叉进行时,栈中可能出现的序列有很多种,但BACF不可能是栈中出现的序列,因为元素C在元素F之前进栈,但F在C之前出栈,违反了栈的后进先出原则。
三、判断题6. 线性表是一种随机存取结构,因此可以随机访问表中的任一元素。
()答案:正确解析:线性表是一种随机存取结构,支持随机访问表中的任一元素,时间复杂度为O(1)。
7. 在双向链表中,每个节点包含两个指针,一个指向前一个节点,另一个指向下一个节点。
()答案:正确解析:双向链表中的每个节点确实包含两个指针,一个指向前一个节点,另一个指向下一个节点,便于从任意方向遍历链表。
数据结构考试卷试题及含答案学习资料

2012 年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上能够把数据结构分为C。
A.动向结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外面结构2.数据结构在计算机内存中的表示是指A。
A .数据的储存结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机没关的是数据的A结构。
A.逻辑B.储存C.逻辑和储存D.物理4.在储存数据时,往常不单要储存各数据元素的值,并且还要储存C。
A.数据的办理方法B.数据元素的种类C.数据元素之间的关系D.数据的储存方法5.在决定选用何种储存结构时,一般不考虑A。
A.各结点的值怎样B.结点个数的多少C.对数占有哪些运算D.所用的编程语言实现这类结构能否方便。
6.以下说法正确的选项是D。
A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的会合D.一些表面上很不同样的数据能够有同样的逻辑结构7.算法剖析的目的是C,算法剖析的两个主要方面是A。
(1)A .找出数据结构的合理性B.研究算法中的输入和输出的关系C.剖析算法的效率以求改良C.剖析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简洁性C.可读性和文档性D.数据复杂性和程序复杂性8.下边程序段的时间复杂度是O(n2)。
s=0;for( I = 0; i < n; i++)for( j=0;j <n;j++)s += B[i][j] ;sum = s ;9.下边程序段的时间复杂度是O(n*m )。
for( i = 0; i <n; i++)for( j=0;j <m;j ++)A[i][j] = 0;10.下边程序段的时间复杂度是O(log3n)。
i = 0;while(i <= n)i = i * 3 ;11.在以下的表达中,正确的选项是B。
A.线性表的次序储存结构优于链表储存结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.行列的操作方式是先进后出12.往常要求同一逻辑结构中的全部数据元素拥有同样的特征,这意味着B。
2012年数据结构与算法参考答案

2012年数据结构与算法参考答案一、填空题1. 顺序存储链式存储2. BDCA3. 132454. Head【Tail【Head【Tail(LS)】】】5. 36. 1297. 08. O(n^2)二、选择题1.A2.C3.D4.D5.A6.A7.B8.B9.D 10.C三、判断题1.✕2. ✓3. ✓4.✓5.✕6.✕7. ✓8. ✕9. ✓10.✕四、应用题1. (1)数(a)的先根序列:ABCDEF数(a)的后根序列:BDEFCA(2)先序:ABCDEFGHIJK中序:BDEFCAIJKHG(3)如下图:ABGH CI JKDEF2. (1) 邻接矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∞58∞∞∞∞∞5∞∞722∞∞8∞∞4∞∞7∞∞74∞∞∞∞6∞2∞∞∞4∞∞∞2∞∞4∞∞8∞∞7∞∞∞∞8∞∞∞6∞88∞ 邻接表:01234567(2) 深度优先搜索树为:(答案不唯一)V0V1V5V4V6V7V2V3(3)最小生成树:3. 解:由线性探测法解决冲突时所建哈希表如下:ASL=(1*5+2*4+3)/10=1.64. (1) 冒泡排序一趟结果:10、4、3、6、12、1、9、18、8、18+(2) 快速排序一趟结果:8、9、4、3、6、1、10、12、18+、18(3) 增量分别为5、3、1结果如下:○110、1、4、3、6、12、18、9、18+、8○23、1、4、8、6、12、10、9、18+、18○31、3、4、6、8、9、10、12、18+、18(4) 初始堆:18、18+、12、10、8、4、1、9、3、6一趟排序结果:18+、10、12、9、8、4、1、6、3、18五、程序填空题1.(1)查询链表的尾结点(2)将第一个结点链接到链表的尾部,作为新的尾结点(3)返回的线性表为(a2,a3,..,,an,a1)2.(1)(2)中序遍历二叉树,按遍历序列中叶子结点数据域的值构建一个以Leafhead为头指针的逆序单链表,或按二叉树中叶子结点数据自右至左链接成一个链表六、算法设计题1.(1) void exam_1(Linklist,La,int,x){p=La→next; q=p; k=0; // p为工作指针pre=la;la →next=NULL; . // q指最小元素while(p&&p→data<x){//比x小的数递减r =p→next;p→next=La →next;La →next=p;p=r ; //置逆}q→next=p;pre=q; //重新链接while(p→data==x){ //考察等于x的情况pre=p;p=p→next;} // whilewhile(p){ // k为计数器k+ +;x=p→data; //避免重复计算} // while(p)} // exam_1(2)typedef int datatype;typedef struct node {datatype data; struct node *next;}lklist;void exam_2(lklist *&head){lklist *p,*q,*s;for(p=head;p!=0;p=p->next){for(q=p->next,s=q;q!=0;if (q->data==p->data){s->next=q->next; free(q);q=s->next;}else{s=q,q=q->next;}}}(3)template<classT>voidSingleList<T>::select_sort(){Node<T>*p,*r,*small;p=first->link;if(p)for(;p->link;p=p->link){for(small=p,r=p->link;r;r=r->link)if(small->data>r->data)small=r;if(small!=p)swap(p->data,small->data);}};2.(1)bool Parent(BiTree *root,TElemType x) //查找值为X,X数据类型为TElemType的结点的双亲值{if(root == NULL){print("二叉树是空树");return false;}if(root->data==x){printf("根结点的值为x,没有双亲");return false;}if(root->lchild->data == x || root->rchild->data == x){printf("找到x的双亲结点,双亲结点值为%d",root->data);return true;}if(Parent(root->lchild,x)==true) return true; //递归调用Parent函数,若找到结点X的双亲,返回if(Parent(root->rchild,x)==true) return true;return false;}(2) 参考思路:类似按层遍历的方式,发现空节点之后看看其后还有没有树节点,没有,则是完全二叉树,使用队列帮助实现Status iscompletetree(BiTree T)//判断是否是完全二叉树、{LinkQueue Q; //声明一个对象BiTree p;p=T;if(!T)return 0;enqueue(Q,p); //结点P入队列while(queueempty(Q)) //判断队列是不是空的{dequeue(Q,p); //出队列if(p){enqueue(Q,p->lchild);enqueue(Q,p->rchild);}if(!p){while(queueempty(Q)){dequeue(Q,p->rchild);if(p) //空节点后还有节点{printf("不是完全二叉树");return ERROR;}}}}return OK;}(3)参考思路:二叉排序树中,可以通过中序遍历的方式实现结点数据的递增遍历和打印,在打印前,可以比较打印的数据是否相同,若相同,记录相同数据的个数,不打印重复点void printnode(BiTree p){static ccount = 0; //记录重复元素个数static BiTree p0=NULL;//记录结点p的前一个结点if (p){printnode(p->left);If(p0->data==p->data) count++;if (p0==NULL || p0->data!=p->data){If(count!=0) printf(“有%d个%d元素”,count,p0->data);printf("%d ", p->data);p0 = p;count = 0;}printnode(p->right);}}。
数据结构考试题目及答案pdf

数据结构考试题目及答案pdf一、单项选择题(每题2分,共10分)1. 在数据结构中,线性结构和非线性结构的主要区别在于()。
A. 数据元素之间是否有逻辑关系B. 是否有且仅有一个根节点C. 是否有多个根节点D. 数据元素之间是否有顺序关系答案:A2. 链表中每个节点包含数据元素和()。
A. 一个指针B. 多个指针C. 一个数据域D. 一个数据域和一个指针答案:D3. 在二叉树的遍历中,先序遍历的顺序是()。
A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表解决冲突的方法不包括()。
A. 开放寻址法B. 链地址法C. 线性探测法D. 二分查找法答案:D5. 堆是一种特殊的完全二叉树,其特点是()。
A. 每个节点的值都大于其子节点的值B. 每个节点的值都小于其子节点的值C. 每个节点的值都大于或等于其子节点的值D. 每个节点的值都小于或等于其子节点的值答案:C二、填空题(每题2分,共10分)1. 在顺序表中,插入一个元素的平均时间复杂度为 O(n) 。
2. 栈是一种特殊的线性表,其特点是后进先出(LIFO),即后进的元素先出栈。
3. 快速排序的时间复杂度在最坏情况下为 O(n^2) 。
4. 广义表的表示形式为 (a, b, c) ,其中a、b、c可以是数据元素或子表。
5. 在图的遍历中,深度优先搜索(DFS)使用的是栈数据结构。
三、简答题(每题10分,共20分)1. 请简述二叉搜索树和平衡二叉树的区别。
答:二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。
平衡二叉树除了满足二叉搜索树的性质外,还要求每个节点的左子树和右子树的高度差不超过1,以保持树的平衡,从而提高查找效率。
2. 什么是图的连通分量?请举例说明。
答:图的连通分量是指图中的最大的连通子图。
如果一个图不是连通的,那么它将被划分为若干个连通分量,每个连通分量内部的顶点都是相互连通的,但不同分量之间没有直接的边相连。
数据结构导论复习卷-数据结构导论试题

数据结构导论复习卷-数据结构导论试题数据结构导论复习卷一、选择题1. 数据结构导论是一门研究什么的学科?a) 计算机程序b) 数据储存和处理的原则c) 程序设计语言d) 硬件设计2. 数据结构中,什么是栈?a) 先进先出的数据结构b) 后进先出的数据结构c) 随机访问的数据结构d) 无序排列的数据结构3. 数据结构中,什么是队列?a) 先进先出的数据结构b) 后进先出的数据结构c) 随机访问的数据结构4. 在数据结构中,什么是链表?a) 数据元素按一定顺序排列的线性结构b) 具有相同类型的数据元素集合c) 一个数据元素和指向下一个数据元素的引用d) 具有先进先出的特性5. 数据结构中,什么是树?a) 一个数据元素和指向下一个数据元素的引用b) 具有相同类型的数据元素集合c) 数据元素按一定顺序排列的线性结构d) 非线性的数据结构,由节点和边组成6. 在数据结构中,什么是图?a) 非线性的数据结构,由节点和边组成b) 具有相同类型的数据元素集合c) 数据元素按一定顺序排列的线性结构d) 一个数据元素和指向下一个数据元素的引用7. 在数据结构中,什么是哈希表?b) 一个数据元素和指向下一个数据元素的引用c) 一种将关键字映射到哈希表中位置的数据结构d) 数据元素按一定顺序排列的线性结构8. 在数据结构中,什么是堆?a) 一种无序的数据结构b) 一个数据元素和指向下一个数据元素的引用c) 具有相同类型的数据元素集合d) 一种被完全二叉树组织且满足堆性质的数据结构二、填空题1. 在数据结构中,栈的插入操作叫作________,删除操作叫作________。
2. 数据结构中,队列的插入操作叫作________,删除操作叫作________。
3. ________树是每个节点最多有两个子节点的树。
4. 在二叉查找树中,对于任意节点N,其左子树中的每个元素都大于________,其右子树中的每个元素都小于________。
数据结构试题及答案

数据结构试题及答案一、选择题题目1:以下哪一个不是线性结构的基本特征?A. 有且只有一个根节点B. 每个节点最多有一个前件和一个后件C. 数据元素之间存在一对一的线性关系D. 数据元素可以任意插入和删除答案:D解析:线性结构的基本特征包括有且只有一个根节点,每个节点最多有一个前件和一个后件,数据元素之间存在一对一的线性关系。
数据元素任意插入和删除是线性表的特点,但不是线性结构的基本特征。
题目2:下列哪种排序算法的平均时间复杂度是 O(n log n)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C解析:快速排序在平均情况下的时间复杂度为 O(n log n),而冒泡排序、选择排序和插入排序的平均时间复杂度均为O(n^2)。
二、填空题题目3:在树形结构中,节点拥有的子节点的个数称为______。
答案:度解析:在树形结构中,节点拥有的子节点的个数称为“度”。
例如,一个节点有两个子节点,则其度为2。
题目4:对于具有 n 个节点的二叉树,其完全二叉树的最小深度为______。
答案:log2(n+1)解析:完全二叉树的最小深度是最后一个节点所在的层级。
对于具有 n 个节点的二叉树,其最小深度为 log2(n+1)。
三、判断题题目5:堆排序是一种不稳定的排序算法。
(对/错)答案:对解析:堆排序是一种不稳定的排序算法。
在堆排序过程中,相等的数据元素可能会改变它们在原数组中的相对位置。
题目6:在顺序存储结构中,数据的插入和删除操作的时间复杂度是 O(1)。
(对/错)答案:错解析:在顺序存储结构中,数据的插入和删除操作的时间复杂度不是 O(1)。
当插入或删除的位置不是在数组的末尾时,需要移动大量元素,其时间复杂度为 O(n)。
四、应用题题目7:给定一个长度为 n 的整数数组 arr,请编写一个算法,找出数组中的旋转点。
假设数组中不包含重复元素,并且原数组是一个升序排序的数组。
例如,数组 `[4, 5, 6, 7, 0, 1, 2]` 的旋转点是 4。
全国自学考试数据结构导论试题及答案(4套)

全国自学考试数据结构导论试题及答案(4套)全国2011年1月自学考试数据结构导论试题课程代码:02142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.在顺序表中查找第i个元素,时间效率最高的算法的时间复杂度为( )A.O(1)B.O(n)C.O(log2n)D.O(n)2.树形结构中,度为0的结点称为( )A.树根B.叶子C.路径D.二叉树3.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={,,,,,,,,,},则图G的拓扑序列是( ) A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V4,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V74.有关图中路径的定义,表述正确的是( )A.路径是顶点和相邻顶点偶对构成的边所形成的序列B.路径是不同顶点所形成的序列C.路径是不同边所形成的序列D.路径是不同顶点和不同边所形成的集合5.串的长度是指( )A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数6.组成数据的基本单位是( )A.数据项B.数据类型C.数据元素D.数据变量7.程序段i=n;x=0;do{x=x+5*i;i--;}while (i>0);的时间复杂度为( )A.O(1)B.O(n)C.O(n2)D.O(n3)8.与串的逻辑结构不同的...数据结构是( )A.线性表B.栈9.二叉树的第i(i≥1)层上所拥有的结点个数最多为( )A.2iB.2iC.2i-1D.2i-110.设单链表中指针p指向结点A,若要删除A的直接后继,则所需修改指针的操作为( ) A.p->next=p->next->next B.p=p->nextC.p=p->next->nextD.p->next=p11.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是( )A.堆排序B.冒泡排序C.直接插入排序D.快速排序12.设字符串S1=″ABCDEFG″,S2=″PQRST″,则运算S=CONCAT(SUBSTR(S1,2,LENGTH(S2)),SUBSTR(S1,LENGTH( S2),2))后S的结果为( )A.″BCQR″B.″BCDEF″C.″BCDEFG″D.″BCDEFEF″13.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并且A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则使其平衡的调整方法为( )A.LL型B.LR型C.RL型D.RR型14.如果结点A有3个兄弟结点,而且B为A的双亲,则B的度为( )A.1B.3C.4D.515.数据表A中每个元素距其最终位置较近,则最省时间的排序算法是( )A.堆排序B.插入排序C.直接选择排序D.快速排序二、填空题(本大题共13小题,每小题2分,共26分)请在每小题的空格中填上正确答案。
2012年1月自考数据库系统原理试题真题及答案

浙04735# 数据库系统原理试卷 第1页(共5页)全国2012年1月高等教育自学考试数据库系统原理试题及答案课程代码:04735一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.数据库类型的划分依据是( B )A.记录形式B.数据模型C.数据联系D.存取数据方法2.在数据库系统中,如果数据库的逻辑结构发生了变化,那么用户的应用程序( C )A.必须改变B.自动改变C.可以不变D.必须作废3.STUDENT 和DEPT 两个关系如下表所示,其中STUDENT 关系中的主码为学号,年龄在18~25之间,DEPT 关系的主码为系号。
向STUDENT 中插入行(507,'王方',17,'D4'),该操作( B)A.仅违反实体完整性B.仅违反参照完整性C.仅违反用户定义完整性D.违反了参照完整性和用户定义完整性4.在数据库设计中,超类实体与子类实体的关系是( D )A.前者只继承后者的主码B.后者只继承前者的主码C.前者继承后者的所有属性D.后者继承前者的所有属性5.设有关系模式R(ABCDEG),F 是R 上成立的FD 集,F={D →G ,C →A ,CD →E ,A →B},则(AC)+F 为( B )A.ACB.ABCC.ABDGD.ABCDEG6.3NF 规范到BCNF ,必须消除( B )A.非主属性对键的部分函数依赖B.非主属性对键的传递函数依赖C.主属性对键的部分和传递函数依赖D.非平凡且非函数依赖的多值依赖7.设有关系R(ABCD)和关系s(BCD),则R×S结果集的元数为(D)A.3B.4C.6D.78.关系代数中投影运算是对关系进行的(A)A.垂直分割B.水平分割C.结合D.先垂直分割后水平分割9.当关系R和S自然连接时,能够把R和S原来应该舍弃的元组放到结果关系中的操作是(D) A.左外连接 B.右外连接C.外部并D.外连接10.嵌入式SQL中实现主语言与SQL语句间的参数传递是通过(B)A.SQLCAB.共享变量C.数据集D.游标11.应用程序中的运算溢出属于(A)A.事务故障B.系统故障C.介质故障D.人为故障12.事务的并发执行不会破坏数据库的完整性,这个性质称为事务的(C)A.原子性B.一致性C.隔离性D.持久性13.在T-SQL语言中,表变量存在的地方是(A)A.内存B.数据库C.文件D.临时表14.PowerBuilder 9.0中,用于生成可执行文件、动态链接库、组件和代理对象的是(B)A.应用画板B.工程画板C.函数画板D.窗口画板15.在面向对象技术中,下列不属于...汇集类型的是(C)A.数组B.列表C.行类型D.包类型二、填空题(本大题共10小题,每小题1分,共10分)浙04735#数据库系统原理试卷第2页(共5页)请在每小题的空格上填上正确答案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国2012年1月高等教育自学考试
数据结构导论试题
课程代码:02142
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.结点按逻辑关系依次排列形成一条“锁链”的数据结构是( )
A.集合
B.线性结构
C.树形结构
D.图状结构
2.下面算法程序段的时间复杂度为( )
for ( int i=0; i<m; i++)
for ( int j=0; j<n; j++)
a[i][j]=i*j;
A. O(m2)
B. O(n2)
C. O(mn)
D. O(m+n)
3.线性结构是( )
A.具有n(n≥0)个表元素的有穷序列
B.具有n(n≥0)个字符的有穷序列
C.具有n(n≥0)个结点的有穷序列
D.具有n(n≥0)个数据项的有穷序列
4.单链表中删除由某个指针变量指向的结点的直接后继,该算法的时间复杂度是( )
A. O(1)
C. O(log2n)
D. O(n)
5.关于串的叙述,正确的是( )
A.串是含有一个或多个字符的有穷序列
B.空串是只含有空格字符的串
C.空串是含有零个字符或含有空格字符的串
D.串是含有零个或多个字符的有穷序列
6.栈的输入序列依次为1,2,3,4,则不可能的出栈序列是( )
A.1243
B. 1432
C. 2134
D.4312
7.队列是( )
A. 先进先出的线性表
B. 先进后出的线性表
C. 后进先出的线性表
D.随意进出的线性表
8.10阶上三角矩阵压缩存储时需存储的元素个数为( )
A.11
B.56
C.100
D.101
9.深度为k(k≥1)的二叉树,结点数最多有( )
A.2k个
B.(2k -1)个
C.2k-1个
D.(2k+1)个
10.具有12个结点的二叉树的二叉链表存储结构中,空链域NULL的个数为( )
A. 11
B.13
C. 23
D. 25
11.具有n个顶点的无向图的边数最多为( )
A.n+1
B.n(n+1)
C.n(n-1)/2
D.2n(n+1)
12.三个顶点v1,v2,v3的图的邻接矩阵为
010
001
010
⎡⎤
⎢⎥
⎢⎥
⎢⎥
⎣⎦
,该图中顶点v3的入度为( )
A. 0
B. 1
C. 2
D. 3
13.顺序存储的表格中有60000个元素,已按关键字值升序排列,假定对每个元素进行查找的概率是相同的,且每个
元素的关键字值不相同。
用顺序查找法查找时,平均比较次数约为( )
A.20000
B.30000
C.40000
D.60000
14.外存储器的主要特点是( )
A.容量小和存取速度低
B.容量大和存取速度低
C.容量大和存取速度高
D.容量小和存取速度高
15.在待排数据基本有序的前提下,效率最高的排序算法是( )
A.直接插入排序
B.直接选择排序
C.快速排序
D.归并排序
二、填空题(本大题共13小题,每小题2分,共26分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
16.数据的不可分割的最小标识单位是__数据项____,它通常不具有完整确定的实际意义,或不被当作一个整体对待。
17.运算分为加工型运算和引用型运算,读取操作是__引用型____ 运算。
18.带有头结点的单向循环链表L(L为头指针)中,指针p所指结点为尾结点的条件是__P—>next=L____。
19.在双链表中,前趋指针和后继指针分别为prior和next。
若使指针p往后移动两个结点,则需执行语句
_*p=p->next->next_____。
20.元素s1,s2,s3,s4,s5,s6依次进入顺序栈S,如果6个元素的退栈顺序为s2,s3,s4,s6,s5,s1,则顺序栈的容
量至少为___3___。
21. 稀疏矩阵一般采用的压缩存储方法是__三元组表示法____ 。
22. 在一棵树中,___根___ 结点没有双亲。
23.一棵具有n个结点的完全二叉树中,从树根起,自上而下、自左至右给所有结点编号。
设根结点编号为1,若编
号为i的结点有父结点,那么其父结点的编号为__[i/2]____。
(是下取整)
24.二叉树的二叉链表存储结构中判断指针p所指结点为叶子结点的条件是
__(p->lchild==null)&&(p->rchild==null)____。
25.边稀疏的无向图采用___邻接表___存储较省空间。
26.除第一个顶点和最后一个顶点相同外,其余顶点不重复的回路,称为__简单回路____。
27.二分查找算法的时间复杂度是__O(n㏒2 n)____。
28.要将序列{51,18,23,68,94,70,73}建成堆,则只需把18与__51____相互交换。
三、应用题(本大题共5小题,每小题6分,共30分)
29.将题29图所示的一棵二叉树转换成对应的森林。
题29图
30.给定权值{3,9,13,5,7},构造相应的哈夫曼(Huffman)树,并计算其带权路径长度。
31.写出题31图的邻接矩阵和每个顶点的入度与出度。
题31图
32. 二叉排序树的各结点的值依次为20~28,请在题32图中标出各结点的值。
题32图
33.用冒泡排序法对数据序列(55,38,65,97,76,138,27,49)进行排序,写出排序过程中的各趟结果。
从第一趟开始时答案
四、算法设计题(本大题共2小题,每小题7分,共14分)
34.设线性表A =(a1,a2,…,a m),B=(b1, b2, …,b n),试写一个按下列规则合并A,B为线性表C的算法,使得
C=(a1, b1, …, a m ,b m ,b m+1, …,b n)当m≤n时;
或者C=(a1, b1, …, a n ,b n ,a n+1, …,a m)当m>n时。
线性表A,B和C均以带头结点的单链表作为存储结构,且C表利用A表和B表中的结点空间构成。
(注意:单链表的长度值m和n均未显式存储。
)
Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C)
{
LinkList pa,pb,qa,qb;
pa=A->next;
pb=B->next;
C=A;
while(pa&&pb)
{
qa=pa;qb=pb;
pa=pa->next; pb=pb->next;
qb->next=qa->next;
qa->next=qb;
}
if(!pa)qb->next=pb;
pb=B;
free(pb);
return OK;
}
35. 二叉树的二叉链表类型定义如下:
typedef struct btnode {
datatype data;
struct btnode *lchild,*rchild;
} bitreptr;
写出后根遍历根指针为t的二叉树的递归算法( void postorder (bitreptr *t) )。
V oid postorder(bitreptr t)
{
If(t!=null)
{
Postorder(t—>lchild);
Postorder(t—>rchild);
Visit(t);
} }。