数据结构试卷一及答案精编版
- 格式:docx
- 大小:20.28 KB
- 文档页数:10
数据结构考试题及答案一、选择题(每题2分,共20分)1. 以下哪个不是线性数据结构?A. 数组B. 链表C. 树D. 图2. 在一个单链表中,删除一个节点的操作需要知道该节点的:A. 地址B. 值C. 索引D. 前驱节点的引用3. 栈(Stack)是一种:A. 线性表B. 树状结构C. 图结构D. 散列表4. 哈希表解决冲突最常用的方法是:A. 排序B. 链地址法C. 再散列D. 除留余数法5. 以下哪个排序算法是稳定的?A. 快速排序B. 冒泡排序C. 选择排序D. 堆排序二、简答题(每题10分,共30分)1. 简述数组和链表的区别。
2. 解释二叉搜索树的基本概念及其优势。
3. 什么是递归?请给出一个简单的递归算法例子。
三、计算题(每题25分,共50分)1. 给定一个无序数组,请写出一个时间复杂度为O(n log n)的排序算法,并说明其工作原理。
2. 描述如何使用队列来实现一个简单的文本编辑器的撤销和重做功能。
四、编程题(共30分)编写一个函数,该函数接受一个整数数组作为参数,返回数组中所有元素的和。
如果数组为空,返回0。
答案一、选择题1. 答案:C(树和图都是非线性结构)2. 答案:D(需要前驱节点的引用来删除节点)3. 答案:A(栈是一种后进先出的特殊线性表)4. 答案:B(链地址法是解决哈希冲突的常用方法)5. 答案:B(冒泡排序是稳定的排序算法)二、简答题1. 数组和链表的区别:- 数组是连续的内存空间,链表是非连续的。
- 数组的索引访问速度快,链表需要遍历。
- 数组的大小固定,链表动态可变。
2. 二叉搜索树的基本概念及其优势:- 二叉搜索树是一种特殊的二叉树,左子树上所有节点的值小于它的根节点的值,右子树上所有节点的值大于它的根节点的值。
- 优势:支持快速的查找、插入和删除操作。
3. 递归是函数自己调用自己的过程。
例如,计算n的阶乘的递归算法: ```cint factorial(int n) {if (n <= 1) return 1;return n * factorial(n - 1);}```三、计算题1. 快速排序算法:- 选择一个元素作为“基准”(pivot)。
第一章概论一、选择题1、研究数据结构就是研究(D )。
A. 数据的逻辑结构B。
数据的存储结构C. 数据的逻辑结构和存储结构D。
数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。
A。
空间复杂度和时间复杂度 B. 正确性和简单性C。
可读性和文档性D。
数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。
A。
图B。
树C。
广义表D。
栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。
A. 可执行性、可移植性和可扩充性B。
可执行性、有穷性和确定性C。
确定性、有穷性和稳定性 D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。
for(i=0;i<m;i++)for(j=0;j〈n;j++)a[i][j]=i*j;A. O(m2) B。
O(n2) C。
O(m*n) D. O(m+n)6、算法是(D )。
A。
计算机程序 B. 解决问题的计算方法C。
排序算法 D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。
A。
O(n) B. O(nlog2n) C。
O(n2) D. O (log2n)8、下面程序段的时间复杂度为( C ).i=1;while(i<=n)i=i*3;A. O(n)B。
O(3n) C。
O(log3n) D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。
A. 结构B。
关系C。
运算D。
算法10、下面程序段的时间复杂度是(A )。
i=s=0;while(s<n){i++;s+=i;}A. O(n) B。
O(n2)C。
O(log2n)D。
O(n3)11、抽象数据类型的三个组成部分分别为(A)。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。
《数据结构》期末考试试卷试题及答案第一部分:选择题(每题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. 编写一个函数,实现链表的插入操作。
(完整版)数据结构试题及答案《数据结构》⾃考复习思考试题○10⼀、单项选择题(本⼤题共15⼩题,每⼩题2分,共30分)在每⼩题列出的四个备选项中只有⼀个是符合题⽬要求的,请将其代码填写在题后的括号内。
错选、多选或未选均⽆分。
1. 若将数据结构形式定义为⼆元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合C. 类型的有限集合D. 关系的有限集合2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( )A. n-i+1B. iC. i+1D. n-i3. 若不带头结点的单链表的头指针为head,则该链表为空的判定条件是( )A. head==NULLB. head->next==NULLC. head!=NULLD. head->next==head4. 引起循环队列队头位置发⽣变化的操作是( )A. 出队B. ⼊队C. 取队头元素D. 取队尾元素5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进⾏,则不.可能出现的出栈序列是( )A. 2,4,3,1,5,6B. 3,2,4,1,6,5C. 4,3,2,1,5,6D. 2,3,5,1,6,46. 字符串通常采⽤的两种存储⽅式是( )A. 散列存储和索引存储B. 索引存储和链式存储C. 顺序存储和链式存储D. 散列存储和顺序存储7. 设主串长为n,模式串长为m(m≤n),则在匹配失败情况下,朴素匹配算法进⾏的⽆效位移次数为( )A. mB. n-mC. n-m+1D. n8. ⼆维数组A[12][18]采⽤列优先的存储⽅法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为( )A. 429B. 432.C. 435D. 4389. 对⼴义表L=((a,b),(c,d),(e,f))执⾏操作tail(tail(L))的结果是( )A. (e,f)B. ((e,f))C. (f)D. ( )10. 下列图⽰的顺序存储结构表⽰的⼆叉树是( )11. n个顶点的强连通图中⾄少含有( )A. n-1条有向边B. n条有向边C. n(n-1)/2条有向边D. n(n-1)条有向边12. 对关键字序列(56,23,78,92,88,67,19,34)进⾏增量为3的⼀趟希尔排序的结果为( )A. (19,23,56,34,78,67,88,92)B. (23,56,78,66,88,92,19,34)C. (19,23,34,56,67,78,88,92)D. (19,23,67,56,34,78,92,88)13. 若在9阶B-树中插⼊关键字引起结点分裂,则该结点在插⼊前含有的关键字个数为( ) A. 4 B. 5C. 8D. 914. 由同⼀关键字集合构造的各棵⼆叉排序树( )A. 其形态不⼀定相同,但平均查找长度相同B. 其形态不⼀定相同,平均查找长度也不⼀定相同C. 其形态均相同,但平均查找长度不⼀定相同.D. 其形态均相同,平均查找长度也都相同15. ISAM⽂件和VSAM⽂件的区别之⼀是( )A. 前者是索引顺序⽂件,后者是索引⾮顺序⽂件B. 前者只能进⾏顺序存取,后者只能进⾏随机存取C. 前者建⽴静态索引结构,后者建⽴动态索引结构D. 前者的存储介质是磁盘,后者的存储介质不是磁盘⼆、填空题(本⼤题共10⼩题,每空2分,共20分)16. 数据的逻辑结构在计算机存储器内的表⽰,称为数据的____________。
数据结构试题及答案(10套)数据结构试题及答案(10套)根据您的需求,我为您准备了10套数据结构试题及答案。
每套试题包含以下几个部分:选择题、填空题、编程题及答案解析。
下面是试题的具体内容:第一套试题:选择题:1. 在数据结构中,什么是栈?A. 先进先出(FIFO)的数据结构B. 后进先出(LIFO)的数据结构C. 随机访问的数据结构D. 无序排列的数据结构2. 以下哪种操作与队列的特性不相符?A. 入队操作B. 出队操作C. 查找操作D. 获取队首元素填空题:1. ______ 是一种动态集合,支持插入、删除和查找等操作。
2. 在二叉搜索树中,中序遍历的结果是________。
编程题:实现一个栈的数据结构,并包含以下操作:- push(x):将元素 x 压入栈中- pop():删除栈顶的元素并返回该元素- top():获取栈顶元素的值- empty():检查栈是否为空答案解析:选择题:B、C填空题:1. 集合 2. 升序序列编程题:略第二套试题:选择题:1. 以下哪个数据结构是一种广度优先搜索的应用?A. 栈B. 队列C. 堆D. 链表2. 在链表中,如果要删除一个节点,只给出该节点的指针,那么需要通过什么方式完成删除操作?A. 直接删除该节点B. 指向该节点的前一个节点的指针C. 指向该节点的后一个节点的指针D. 无法完成删除操作填空题:1. 树是一种________的数据结构。
2. 二叉树每个节点最多有______个子节点。
编程题:实现一个队列的数据结构,并包含以下操作:- enqueue(x):将元素 x 入队- dequeue():删除队首的元素并返回该元素- peek():获取队首元素的值- is_empty():检查队列是否为空答案解析:选择题:B、B填空题:1. 分层组织 2. 2编程题:略(以下部分省略)通过以上的题目,您可以对数据结构的知识点进行综合练习和复习。
每套试题包含了不同难度和类型的题目,能够帮助您全面了解和掌握数据结构的概念和操作。
数据结构试卷试题及答案一、选择题(每题5分,共40分)1. 数据结构是研究数据元素的()A. 存储结构B. 处理方法C. 逻辑结构D. 所有以上内容答案:D2. 在数据结构中,通常采用()方式来表示数据元素之间的逻辑关系。
A. 顺序存储结构B. 链式存储结构C. 索引存储结构D. 散列存储结构答案:B3. 下面哪一个不是栈的基本操作?()A. 入栈B. 出栈C. 判断栈空D. 获取栈顶元素答案:D4. 下面哪一个不是队列的基本操作?()A. 入队B. 出队C. 判断队列空D. 获取队头元素答案:D5. 下面哪一个不是线性表的特点?()A. 有且只有一个根节点B. 每个节点最多有一个前驱和一个后继C. 数据元素类型相同D. 数据元素类型可以不同答案:D6. 在下列哪种情况中,使用链式存储结构比顺序存储结构更合适?()A. 数据元素经常插入和删除B. 数据元素大小不固定C. 数据元素个数不确定D. 所有以上情况答案:D7. 下面哪一个不是树的遍历方式?()A. 前序遍历B. 中序遍历C. 后序遍历D. 翻转遍历答案:D8. 在下列哪种情况中,使用散列存储结构比其他存储结构更合适?()A. 数据元素个数较少B. 数据元素查找频繁C. 数据元素插入和删除频繁D. 数据元素大小不固定答案:B二、填空题(每题5分,共30分)9. 栈是一种特殊的线性表,它的插入和删除操作都限定在表的一端进行,这一端称为______。
答案:栈顶10. 队列是一种特殊的线性表,它的插入操作在表的一端进行,这一端称为______,而删除操作在另一端进行,这一端称为______。
答案:队尾、队头11. 二叉树中的节点包括______和______。
答案:根节点、子节点12. 在图的存储结构中,邻接矩阵表示法用______个一维数组来表示图中各个顶点之间的关系。
答案:两个13. 散列存储结构中,关键码到存储地址的映射方法称为______。
数据结构习题集(自编)第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系 C.运算 D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确 C.无法确定 D.以上答案都不对4.算法分析的目的是()。
A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态 C. A和B6.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
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(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
最新十套数据结构试题及答案最新十套数据结构试题及答案数据结构试卷(一).................1数据结构试卷(二).. (4)数据结构试卷(三).................6数据结构试卷(四).................8数据结构试卷(五)................11数据结构试卷(六)................14数据结构试卷(七)................16数据结构试卷(八)................18数据结构试卷(九)................20数据结构试卷(十). (23)数据结构试卷(一)参考答案.........26数据结构试卷(二)参考答案 (27)数据结构试卷(三)参考答案.........28数据结构试卷(四)参考答案.........30数据结构试卷(五)参考答案.........32数据结构试卷(六)参考答案.........33数据结构试卷(七)参考答案.........36数据结构试卷(八)参考答案.........37数据结构试卷(九)参考答案.........38数据结构试卷(十)参考答案.........39数据结构试卷(一)一、单选题(每题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进制表示。
a.688b.678c.692d.6965.树最适合用来表示()。
数据结构试题及答案(10套最新)数据结构试题及答案(10套最新)第一套试题:问题一:什么是数据结构?数据结构的作用是什么?回答:数据结构是一种组织和存储数据的方式,它关注数据元素之间的关系以及对数据元素的操作。
数据结构的作用包括提供高效的数据存储和访问方式,减少资源消耗,简化问题的解决方法,提高算法的性能和程序的可读性。
问题二:请列举几种常见的线性数据结构,并简要介绍它们的特点。
回答:常见的线性数据结构包括数组、链表和栈。
数组是一种连续存储数据元素的结构,具有随机访问的特点;链表是一种通过指针相连的数据元素,可以灵活地插入和删除元素;栈是一种遵循先进后出原则的数据结构,常用于解决递归问题。
问题三:请说明二叉树的定义及其性质。
回答:二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点。
二叉树具有以下性质:每个节点最多有两个子节点,分别称为左子节点和右子节点;左子树和右子树都是二叉树;二叉树的节点个数为n,边的个数为n-1。
问题四:在数组中查找一个元素的时间复杂度是多少?为什么?回答:在数组中查找一个元素的时间复杂度是O(n),其中n是数组的长度。
因为在数组中查找元素需要按照索引一个一个比较,最坏情况下需要比较n次才能找到目标元素。
问题五:请解释堆排序算法的原理及时间复杂度。
回答:堆排序算法利用堆这种数据结构进行排序。
首先将待排序的元素构建成一个大顶堆,然后将堆顶元素与最后一个元素交换,继续调整堆,再取出堆顶元素与倒数第二个元素交换,依次执行,最后得到从小到大排序的序列。
堆排序的时间复杂度为O(nlogn)。
第二套试题:问题一:请解释图的邻接矩阵和邻接表表示法。
回答:图的邻接矩阵表示法是使用二维数组来表示图的连接关系,数组中的元素表示相应节点之间的边的关系。
邻接表表示法使用链表来表示图的连接关系,链表中的元素表示相邻节点之间的边的关系。
问题二:请说明深度优先搜索算法的原理及其应用。
回答:深度优先搜索(DFS)算法是一种遍历或搜索图的算法,其原理是从起始节点开始,依次深入到尽可能远的节点,直到无法继续深入为止,然后回溯到上一个节点,再继续深入其他未访问过的节点。
数据结构试卷一及答案公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-
习题一
一、选择题 ( 每小题 2 分,共 20 分 )
1.下列程序段的时间复杂度为()。
i=0,s=0; while (s<n) {s=s+i;i++;}
(A) O(n/2) (B) O(n/3) (C) O(n) (D) O(n2)
2.设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列()存储方式最节省运算时间。
(A) 单向链表 (B) 单向循环链表 (C) 双向链表 (D) 双向循环链表
3.设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为()。
(A) s->next=p->next;p->next=-s; (B) q->next=s; s->next=p;
(C) p->next=s->next;s->next=p; (D) p->next=s;s->next=q;
4.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为()。
(A) 5,3,4,6,1,2 (B) 3,2,5,6,4,1
(C) 3,1,2,5,4,6 (D) 1,5,4,6,2,3
5.设有一个10阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55个存储单元中,每个数组元素占1个字节的存储空间,则A[5][4]地址与A[0][0]的地址之差为()。
(A) 10 (B) 19 (C) 28 (D) 55
6.设一棵m叉树中有N1个度数为1的结点,N2个度数为2的结点,……,Nm个度数为m的结点,则该树中共有()个叶子结点。
7. 二叉排序树中左子树上所有结点的值均()根结点的值。
(A) < (B) > (C) = (D) !=
8. 设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为()。
(A) 129 (B) 219 (C) 189 (D) 229
9. 设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到HASH表中需要做()次线性探测。
(A) n2 (B) n(n+1) (C) n(n+1)/2 (D) n(n-1)/2
10.设某棵二叉树中只有度数为0和度数为2的结点且度数为0的结点数为n,则这棵二叉中共有()个结点。
(A) 2n (B) n+l (C) 2n-1 (D) 2n+l
二、填空题 ( 每空?2 分,共 50 分 )
1. 数据元素及其关系在计算机存储器内的表示称为。
2. 假设某个带头结点的单链表的头指针为head,则判定该表为空表的条件是。
3. 栈是一种操作受限的线性结构,其操作的主要特征是。
若进栈序列为1 23,则不可能的出栈序列为。
4. 已知广义表C=(a,(b,c),d),则:tail(head(tail(C)))= 。
5. 要在单链表中指针p所指向结点后插入s所指的结点,应顺序执行和
语句。
6.具有3个结点的二叉树有种形态。
7.一棵二叉树采用二叉链表存储,则必有
个指针域不空。
8.对关键字序列<46,79,56,38,40,84>采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为。
9. 在哈希查找中,处理冲突的方法有、再哈希法、和建立公共溢出区。
10.在堆排序过程中,由n个待排序记录建成初始堆需要进行次筛选。
11.已知二叉树中叶子结点数为50,则该二叉树的总结点数至少应有个。
12.一个具有n个顶点无向连通图最少有条边,最多有条边。
13.图的深度优先搜索遍历算法类似于二叉树的遍历,图的广度优先遍历算法类似于二叉树的遍历。
14.在二叉排序树上进行
遍历,可以得到一个关键字的递增序列。
15.在图G的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的;对于有向图来说等于该顶点的。
16.若待排序序列中存在多个具有相同关键字的记录,若排序完成后这些记录的相对位置发生改变,则称该排序法是。
写出3种不稳定的排序法
、、。
三、判断题 (每小题1分,共 10 分 )
1.单链表的头结点是必不可少的。
()
2.如果一个二叉树中没有度为1的结点,则必为满二叉树。
()
3.顺序存储结构只能用来存放线性结构,链式存储结构只能用来存放非线性结构。
()
4.队列只能在队首进行删除,在队尾进行插入。
()
5.一棵树转换成二叉树后根结点一定没有右孩子。
()
6.有向图中,所有结点的出度之和等于入度之和。
()
7.内部排序是指排序过程在内存中进行的排序。
()
8.在一个大根堆中,最小元素不一定在最后。
()
9.一棵赫夫曼树中不存在度为1的结点。
()
10.平衡二叉树左子树和右子树的深度之差的绝对值不超过1。
()
四、算法设计题(每题10分,共20分)
1.从顺序表中删除具有最小值的元素并返回被删元素的值。
空出的位置由最后一个元素填补,若顺序表为空则显示出错信息。
顺序表的类型描述如下:
#define maxsize 100
typedef struct
{
ElemType elem[maxsize]; /* 线性表占用的数组空间。
*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中
的位置(下标值),空表置为-1*/
} SeqList;
2.已知一个二叉树采用二叉链表存放,写一算法,计算二叉树的度为2的结点的个数。
二叉链表的类型描述如下:
typedef struct Node
{
DataType data;
struct Node * lchild;
struct Node * rchild;
}BiTNode, *BiTree;
答案:
一、选择题
1.A 2.D 3.B 4.B 5.B
6.D 7.A 8.D 9.D 10.C
二、填空题
1.物理结构或存储结构
>next==NULL
3.先进后出或后进先出、312
4. (c)
5. s->next= p->next 、p->next=s
6. 5种
个
8.(40,38,46,56,79,84)
9.开放定址法、链地址法
10. n/2
11. 99
、n(n-1)/2
13.先序,层次
14.中序
15.度、出度
16.不稳定、(简单选择排序、堆排序、快速排序、希尔排序)任选3个
三、判断题
1-10:×××√√√√√√√
四、算法设计题
1.解:
#define OK 1
#define ERROR 0
int DelList(SeqList *L,ElemType *e)
/*在顺序表L中删除最小值的数据元素,并用指针参数e返回其值。
空出的位置由最后一个元素填补*/
{
int m=0,i; :
/* NodeCount保存满足条件的结点的数目的全局变量,调用之前初始化值为0 */
void Node(BiTree root)
{
if(root!=NULL)
{ Node(root->LChild,x);
Node(root->RChild,x);
if (root->lchild!=NULL&& root->rchild!=NULL)
NodeCount++;
}
}。