数据结构习题72724

合集下载

《数据结构》2024-2025期末试题及答案

《数据结构》2024-2025期末试题及答案

《数据结构》2024-2025期末试题及答案一、单项选择题1. 给定有n个元素的向量,建立一个有序单链表的时间复杂度是( C )。

A. O(1)B. O(n)C. O(n2)D. O(nlog2n)2. 带表头的双向循环链表的空表满足( B )。

A. first=NULL;B. first->rLink==firstC. first->lLink==NULLD. first->rLink==NULL3. 栈的插入和删除操作在( A )进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置4. 在一个顺序存储的循环队列中,队头指针指向队头元素的( A )位置。

A. 前一个B. 后一个C. 当前D. 后面5. 假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为( D )。

A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear6. 设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行( A )操作。

A. x=top->data; top=top->link;B. top=top->link; x=top->data;C. x=top; top=top->link;D. x=top->data;7. 为增加内存空间的利用率和减少溢出的可能性, 由两个栈共享一块连续的内存空间时, 应将两栈的( D )分别设在这块内存空间的两端。

A. 长度B. 深度C. 栈顶D. 栈底8. 在系统实现递归调用时需利用递归工作记录保存( C ),当递归调用程序执行结束时通过它将控制转到上层调用程序。

A. 调用地址B. 递归入口C. 返回地址D. 递归出口9. 如果一个递归函数过程中只有一个递归语句,而且它是过程体的最后语句,则这种递归属于( D ),它很容易被改写为非递归过程。

2024年自考-自考专业(计算机网络)-数据结构考试历年真题常考点试题3带答案

2024年自考-自考专业(计算机网络)-数据结构考试历年真题常考点试题3带答案

2024年自考-自考专业(计算机网络)-数据结构考试历年真题常考点试题带答案(图片大小可任意调节)第1卷一.单选题(共20题)1.若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少,下列选项中,应选择的存储结构是()。

A.无头结点的单向链表B.带头结点的单向链表C.带头结点的双循环链表D.带头结点的单循环链表2.判断两个串大小的基本准则是()。

A.两个串长度的大小B.两个串中首字符的大小C.两个串中大写字母的多少D.对应的第一个不等字符的大小3.下列关键字序列中,构成大根堆的是()。

A.5, 8,1,3,9, 6,2,7B.9 ,8,1,7,5,6,2,33C.9, 8,6,3,5, l ,2,7D.9,8,6,7,5,1,2,34.设有一个10阶的对称矩阵A,采用行优先压缩存储方式,a11为第一个元素,其存储地址为1,每个元素占一个字节空间,则a85的地址为()。

A.13B.18C.33D.40A.顺序文件B.索引文件C.散列文件D.倒排文件6.栈是一种操作受限的线性结构,其操作的主要特征是()。

A.先进先出B.后进先出C.进优于出D.出优于进7.对长度为15的有序顺序表进行二分查找,在各记录的查找概率均相等的情况下,查找成功时所需进行的关键字比较次数的平均值为()。

A.39/15B.49/15C.51/15D.55/158.若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是()。

A.树中没有度为 2的结点B.树中只有一个根结点C.树中非叶结点均只有左子树D.树中非叶结点均只有右子树9.若元素的入栈顺序为1,2,3....,n,如果第2个出栈的元素是n,则输出的第i(1A.n-iB..n-i+lC.n-i+2D.无法确定10.下列数据结构中,不属于二叉树的是()。

A.B树 B树是一种平衡的多叉树B. AVL树 AVL树是自平衡二叉查找树C.二叉排序树D.哈夫曼树哈夫曼树是最优二叉树11.若一个算法的时间复杂度用T(n)表示,其中n的含义是()。

数据结构综合练习题及答案.doc

数据结构综合练习题及答案.doc

数据结构(一)一、选择题1.组成数据的基本单位是(C )。

(A)数据项(B)数据类型(C)数据元素(D)数据变最2.设数据结构A=(D, R),其中D={1, 2, 3, 4}, R={r}, r={<l, 2>, <2, 3>, <3, 4>, <4, 1>},则数据结构人是(C )o(A)线性结构(B)树型结构(C)图型结构(D)集合3、数组的逻辑结构不同于下列(D )的逻辑结构。

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

(A) 2i (B) 21(C) 2i_1(D) 2i-l5、设指针变量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的初始状态为空,元素El、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 )0(A) 100 (B) 40 (C) 55 (D) 808、设结点A冇3个兄弟结点H.结点B为结点A的双亲结点,则结点B的度数数为(B )。

(A) 3 (B) 4 (0 5 (D) 19、根据二义树的定义可知二义树共有(B )种不同的形态。

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

(A)冒泡排序(B)快速排序(C)堆排序(D)希尔排序11、以下说法正确的是(A )A.连通图的牛成树,是该连通图的一个极小连通子图。

数据结构习题(有答案)(精选文档)

数据结构习题(有答案)(精选文档)

数据结构习题(有答案) 第1章绪1。

1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,并指出它们分别属于何种结构。

(1) A= ( D,R ),其中,D = { a1,a2,a3,a4}, R={ }(2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)}(3) C= ( D,R),其中,D = { a,b,c,d,e,f,g}, R={(d,b),(d,g),(1)集合(2) 线性表a b c d e(3)树fgabcde(4)图1453621 / 48·····谢阅。

(b,a),(b,c),(g,e),(e,f)}(4) K= ( D,R ),其中,D= { 1,2,3,4,5,6}, R={〈1,2>,〈2,3>,〈2,4>,<3,4>,<3,5>,<3,6>,<4,5〉,〈4,6〉}1.2设n为正整数,求下列各程序段中的下划线语句的执行次数。

(1) i=1;k=0while(i 〈=n-1){k+=10*i ;i++;(2) for (int i=1;i<=n; i++)for (int j=1; j〈=n; j++){c[i][j]=0;解:(1) n-1(2) ∑∑∑====ninjnkn111312 / 48·····谢阅。

}ﻩ for(intk=1; k〈=n; k++)c[i][j]=c[i][j]+a[i][k]*b[k][j]}(3) x=0;y=0;for (int i=1; i<=n; i++)for (int j=1; j<=i; j++)for (intk=1; k〈=j; k ++)(3)62)1)(nn(n21)(216)12)(1(2121212)1(1112111111++=+•+++•=+=+==∑∑∑∑∑∑∑∑========nnnnniii ijnininiijjkniijni3 / 48·····谢阅。

2024王导数据结构综合应用题

2024王导数据结构综合应用题

2024王导数据结构综合应用题以下是一份可能的2024王导数据结构综合应用题:题目:题目:设计一个顺序表(SqList)的基本操作,包括插入和删除元素,并实现一个函数判断顺序表是否已满。

请用C++语言实现。

要求:1. 顺序表的最大长度为 MaxSize。

2. 插入操作应按指定的位序插入元素,如果位序不正确或顺序表已满,则返回 false。

3. 删除操作应按指定的位序删除元素,如果位序不正确或顺序表为空,则返回 false。

4. 判断顺序表是否已满的函数应返回 true 或 false。

注意:本题答案需提供完整的 C++ 代码,并包括必要的头文件和命名空间声明。

参考答案:```cppinclude <iostream>include <cstring>using namespace std;const int MaxSize = 100; // 顺序表的最大长度// 顺序表的定义struct SqList {ElemType data[MaxSize]; // 存储元素的数组 int length; // 顺序表的当前长度};// 初始化顺序表void InitList(SqList& L) {= 0;}// 判断顺序表是否已满bool IsFull(SqList& L) {return == MaxSize;}// 获取顺序表的长度int Length(SqList& L) {return ;}// 在指定位序插入元素,返回操作是否成功bool ListInsert(SqList& L, int i, ElemType e) { if (IsFull(L)) {cout << "表满!" << endl;return false;}if (i < 1 i > Length(L) + 1) {cout << "请输入正确的位序!" << endl; return false;}for (int j = Length(L); j >= i; j--) {[j] = [j - 1];}[i - 1] = e;++;return true;}// 在指定位序删除元素,返回操作是否成功,并将被删除的元素存储在 e 中bool ListDelete(SqList& L, int i, ElemType& e) {if (Length(L) == 0) {cout << "空表!" << endl;return false;}if (i < 1 i > Length(L)) {cout << "请输入正确的位序!" << endl;return false;}e = [i - 1]; // 将被删除的元素存储在 e 中for (int j = i; j < Length(L); j++) {[j - 1] = [j]; // 将后面的元素向前移动一位,覆盖被删除的元素位置}; // 顺序表的长度减一 return true;}。

数据结构练习题与答案

数据结构练习题与答案

第1章绪论、判断题1.数据的逻辑结构与数据元素本身的内容和形式无关.〔,〕2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个根本运算集构成的整体.〔,〕3.数据元素是数据的最小单位.〔X〕4.数据的逻辑结构和数据的存储结构是相同的.〔X〕5.程序和算法原那么上没有区别,所以在讨论数据结构时可以通用.〔X〕6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类.〔,〕7.数据的存储结构是数据的逻辑结构的存储映象.〔,〕8.数据的物理结构是指数据在计算机内实际的存储形式.〔,〕9.数据的逻辑结构是依赖于计算机的.〔X〕10.算法是对解题方法和步骤的描述.〔,〕二、填空题1.数据有逻辑结构和存储结构两种结构.2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结翅.3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构.4.树形结构和图形结构合称为非线性结构.5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点.6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多会.7.数据的存储结构又叫物理结构.8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存僮.9.线性结构中的元素之间存在一对二的关系.10.树形结构中的元素之间存在一对多的关系.11.图形结构的元素之间存在多对多的关系.12.数据结构主要研究数据的逻辑结构、存储结构和算法〔或运算〕3个方面的内容.13.数据结构被定义为〔D,R〕,其中D是数据的有限集合,R是D上的关系有限集合.14.算法是一个有穷指令的集合.15.算法效率的度量可以分为事先估算法和事后统计法.16.一个算法的时间复杂度是算法输入规模的函数.17.算法的空间复杂度是指该算法所消耗的存储空回,它是该算法求解问题规模的n的函数.18.假设一个算法中的语句频度之和为T〔n〕=6n+3nlog2n,那么算法的时间复杂度为O〔nlog*〕19.假设一个算法的语句频度之和为T〔n〕=3n+nlog,n2,那么算法的时间复杂度为O〔n2〕.20.数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及它们之间的关系和运算的学科.三、选择题1.数据结构通常是研究数据的〔A〕及它们之间的相互关系.A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑2.在逻辑上可以把数据结构分成〔C〕.A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构.3.数据在计算机存储内表示时,物理地址和逻辑地址相同并且是连续的,称之为〔C〕.A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构4.非线性结构中的每个结点〔D〕.A.无直接前驱结点.B.无直接后继结点.A.正确性17 .以下时间复杂度中最坏的是A.O 〔1〕18 .以下算法的时间复杂度是〔for 〔i=0;i<n;i++〕for 〔j=o;i<n;j++〕 c[i][j]=i+j; A.O 〔1〕19 .算法分析的两个主要方面是A.空间复杂性和时间复杂性 C.可读性和文档性B.易读性 D). B.O(n) D).B.O(n) A).C. 健壮性D.高效性 C.O(log 2n) C.(log 2n)B.正确性和简明性D.数据复杂性和程序复杂性20.计算机算法必须具备输入、输出和〔C).A.计算方法B.排序方法D.O(n 2)D.O(n 2)C.解决问题的有限运算步骤D.程序设计方法A.分两局部,一局部存放结点的值,另一个局部存放表示结点间关系的指针. D.分两局部,一局部存放结点的值,另一局部存放结点所占单元素 每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储空间里,这种存储结构称为14.每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是〔C 〕存储方式.5.C.只有一个直接前驱结点和一个直接后继结点D.可能有多个直接前驱结点和多个直接后继结点链式存储结构所占存储空间〔A).B.只有一局部,存放结点的值.C.只有一局部,存储表示结点间关系的指针. 6. 7.算法的计算量大小称为算法的〔 A.现实性I数据的根本单位〔B 〕.A.数据结构IC 〕.B.难度B.数据元素C.时间复杂性C.数据项D.效率D.文件 9.〔A 〕结构. A.顺序结构 B.链式结构 C.索引结构 每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是〔A.顺序B.链式C.索引D.散列结构B 〕. D.散列10 .以下任何两个结点之间都没有逻辑关系的是〔B,线性结构D 〕.C.树形结构D.集合 11 .在数据结构中,与所使用的计算机无关的是〔B.存储结构C 〕.C.逻辑结构D.逻辑和存储结构 12.以下4种根本逻辑结构中,数据元素之间关系最弱的是〔A).B,线性结构C.树形结构D.图形结构 13.与数据元素本身的形式、内容、相对位置、个数无关的是数据的〔A).A.逻辑结构B.存储结构C.逻辑实现D.存储实现8. A.顺序 B.链式 C. 索引 D.散列 15.算法能正确的实现预定功能的特性称为算法的〔A.正确性B.易读性A).C. 健壮性D.高效性16.算法在发生非法操作时可以作出相应处理的特性称为算法的C).第2章线性表一、判断题1.线性表的链式存储结构优于顺序存储.〔X〕2.链表的每个结点都恰好包含一个指针域.〔X〕3.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻.〔,〕4.顺序存储方式的优点是存储密度大,插入、删除效率高.〔X〕5.线性链表的删除算法简单,由于当删除链中某个结点后,计算时机自动地将后续的各个单元向前移动.〔X〕6.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型.〔X〕7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素.〔,〕8.线性表采用顺序存储,必须占用一片连续的存储单元.〔,〕9.顺序表结构适宜进行顺序存取,而链表适宜进行随机存取.〔X〕10.插入和删除操作是数据结构中是最根本的两种操作,所以这两种操作在数组中也经常使用.〔X〕二、填空题1.顺序表中逻辑上相邻的元素在物理位置上必须把生2.线性表中结点的集合是有限的,结点间的关系是一对一关系.3.顺序表相对于链表的优点是节省存储和随机存取.4.链表相对于顺序表的优点是插入、删除方便.5.当线性表的元素总数根本稳定,且很少进行插入和删除操作,但要求以最快速度存取线性表中的元素时,应采用顺序存储结构.6.顺序表中访问任意一个结点的时间复杂度均为O〔1〕Q7.链表相对于顺序表的优点是插入、删除方便;缺点是存储密度小._8.在双向链表中要删除结点*P,其时间复杂度为O〔1〕.9.在单向链表中要在结点*P之前插入一个新结点,需找到*P的直接前驱结点的地址,其查找的时间复杂度为O〔n〕Q10.在单向链表中需知道头指针才能遍历整个链表.11.线性表中第一个结点没有直接前驱,称为开始结点.12.在一个长度为n的顺序表中删除第i个元素,要移动n-i个元素.13.在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n-i+1个元素.14.在无头结点的单向链表中,第一个结点的地址存放在头指针中,而其他结点的存储地址存放在前趋结点的指针域中.15.线性表的元素总数不确定,且经常需要进行插入和删除操作,应采用链子存储结构.16.在线性表中的链式存储中,元素之间的逻辑关系是通过指针决定.17.在双向链表中,每个结点都有两个指针域,它们一个指向其前趋结点,另一个指向其后继结点.18.对一个需要经常进行插入和删除操作的线性表,采用链式存储结构为宜.19.双向链表中,设P是指向其中待删除的结点,那么需要执行的操作为p->prior->next=p->next;p->next->prior=p->prior20.在如下图的链表中,假设在指针P所在的结点之后插入数据域值为a和b的两个结点,那么可用语句S->next->next=p->next和P->next=S;来实现该操作.三、选择题1 .在具有n 个结点的单向链表中,实现〔A 〕的操作,其算法的时间复杂度都是O 〔n 〕.A.遍历链表或求链表的第i 个结点B.在地址为P 的结点之后插入一个结点C.删除开始结点D.删除地址为P 的结点的后继结点2 .设a 、b 、c 为3个结点,p 、10、20分别代表它们的地址,那么如下的存储结构称为〔B 〕.a10►b20►c 八C.双向循环链表D.双向链表 C.小于1D.不能确定m 个存储单元,假设第一个结点的地址为B,那么第i 个结点A.B+〔i-1〕XmB.B+iXmC.B-ixm5 .在有n 个结点的顺序表上做插入、删除结点运算的时间复杂度为〔A.O 〔1〕B.O 〔n 〕C.O 〔n 2〕6 .设front 、rear 分别为循环双向链表结点的左指针和右指针,那么指针尾元素的条件是〔D 〕. A.P==LB.P->front==L7 .两个指针P 和Q,分别指向单向链表的两个元素,A.P->next==Q->nextB.P->next==Q 8 .用链表存储的线性表,其优点是〔C 〕.A,便于随机存取B.花费的存储空间比顺序表少C.便于插入和删除D.数据元素的物理顺序与逻辑顺序相同 9 .在单链表中,增加头结点的目的是〔C 〕.A.使单链表至少有一个结点B.标志表中首结点的位置C.方便运算的实现D.说明该单链表是线性表的链式存储结构 10 .下面关于线性表的表达中,错误的选项是〔D 〕关系.A.顺序表必须占一片地址连续的存储单元B .顺序表可以随机存取任一元素 C.链表不必占用一片地址连续的存储单元D.链表可以随机存取任一元素11 .L 是线性表,LengthList 〔L 〕的值是5,经DelList 〔L,2〕运算后,LengthList 〔L 〕的值是〔C 〕.A.循环链表B.单向链表 3 .单向链表的存储密度〔C 〕.A.大于1B.等于14 .一个顺序存储的线性表,设每个结点占的地址为〔A 〕.D.B+(i+1)XmB ).D.O(log 2n)P 所指的元素是双循环链表L 的D.P->rear==L所指元素前驱的条件是(B)C.P==NULL P 所指元素是QC.Q->next==PD.P==QpA.2B.3C.4D.512.单向链表的示意图如下:指向链表Q 结点的前驱的指针是〔B 〕.C.Q13 .设p 为指向单循环链表上某结点的指针,那么*p 的直接前驱〔C 〕.A,找不到B.查找时间复杂度为O 〔1〕C.查找时间复杂度为O 〔n 〕D.查找结点的次数约为n14 .等概率情况下,在有n 个结点的顺序表上做插入结点运算,需平均移动结点的数目为〔8〕.A.nB.〔n-1〕/2C.n/2D.〔n+1〕/215 .在以下链表中不能从当前结点出发访问到其余各结点的是〔C 〕.19 .以下关于线性表的论述,不正确的为〔C 〕.A.线性表中的元素可以是数字、字符、记录等不同类型B.线性顺序表中包含的元素个数不是任意的C.线性表中的每个结点都有且仅有一个直接前驱和一个直接后继D.存在这样的线性表,即表中没有任何结点 20 .在〔B 〕的运算中,使用顺序表比链表好.A.插入B.根据序号查找C.删除B.P A.双向链表 B.单循环链表C.单向链表D.双向循环链表 16 .在顺序表中,只要知道〔D 〕,就可以求出任一结点的存储地址. A.基地址B.结点大小C.向量大小17 .在双向链表中做插入运算的时间复杂度为〔A 〕.A.O 〔1〕B.O 〔n 〕C.O 〔n 2〕18 .链表不具备的特点是〔A 〕.D.基地址和结点大小D.O 〔log 2n 〕A.随机访问B.不必事先估计存储空间C. 插入删除时不需要移动元素D.所需空间与线性表成正比D.根据元素查找、判断题1 .栈是运算受限制的线性表.〔,〕2 .在栈空的情况下,不能作出栈操作,否那么产生下溢.〔,〕3 .栈一定是顺序存储的线性结构.〔X 〕4 .栈的特点是“后进先出〞.〔,〕5 .空栈就是所有元素都为0的栈.〔X 〕6 .在C 〔或C++〕语言中设顺序栈的长度为MAXLEN,那么top=MAXLEN 时表示栈满.〔X 〕7 .链栈与顺序栈相比,其特点之一是通常不会出现栈满的情况.〔,〕8 .一个栈的输入序列为:A,B,C,D,可以得到输出序列:C,A,B,D .〔X 〕9 .递归定义就是循环定义.〔x 〕10 .将十进制数转换为二进制数是栈的典型应用之一.〔,〕 二、填空题1 .在栈结构中,允许插入、删除的一端称为栈顶.2 .在顺序栈中,当栈顶指针top=-1时,表示栈空.3 .在有n 个元素的栈中,进栈操作时间复杂度为O 〔1〕.4 .在栈中,出栈操作时间复杂度为O 〔1〕.5 .表达式,求它的后缀表达式是栈的典型应用.6 .在一个链栈中,假设栈顶指针等于NULL,那么表示栈空.7 .向一个栈顶指针为top 的链栈插入一个新结点*p 时,应执行p->next=top;top=p ;操作. 8 .顺序栈S 存储在数组S->data[0-MAXLEN-1]中,进栈操作时要执行的语句有:S->top -.〔或S->top+1〕 S->data[S->top]=x9 .链栈LS,指向栈顶元素的指针是LS->next .10 .从一个栈删除元素时,首先取出栈顶元素,然后再移动栈顶指针. 11 .由于链栈的操作只在链表的头部进行,所以没有必要设置头结点. 12 .顺序栈S,在对S 进栈操作之前首先要判断栈是否满. 13 .顺序栈S,在对S 出栈操作之前首先要判断栈是否空. 14 .假设内在空间充足,链栈可以不定义栈满运算. 15 .链栈LS 为空的条件是LS->next=NULL . 16 .链栈LS 的栈顶元素是链表的首元素. 17 .同一栈的各元素的类型相同.18 .假设进栈的次序是A 、B 、C 、D 、E,执行3次出栈操作以后,栈顶元素为B . 19 .A+B/C-D*E 的后缀表达式是ABC/+DE*-.20 .4个元素A 、B 、C 、D 顺序进S 栈,执彳T 两次Pop 〔S,x 〕运算后,x 的值是C . 三、选择题第3章栈1 .插入和删除操作只能在一端进行的线性表,称为〔A.队列B.循环队列2 . C 〕.C.栈D.循环栈D 〕.设有编号为1,2.3,4的4辆列车,顺序进入一个栈结构的站台,以下不可能的出站顺序为〔A.1234B,12433.如果以链表作为栈的存储结构,那么出栈操作时〔A.必须判别栈是否满B.必须判别栈是否为空4.元素A、B、C、D依次进栈以后,栈顶元素是〔A.AB.BC.1324D,1423B〕.C.必须判别栈元素类型D.栈可不做任何判别D〕C.CD.D5 .顺序栈存储空间的实现使用〔B 〕存储元素.A.链表B.数组C.循环链表D.变量6 .在C 〔或C++〕语言中,一个顺序栈一旦被声明,其占用空间的大小〔A 〕.A,已固定B,不固定C.可以改变D.动态变化7 .带头结点的链栈LS 的示意图如下,栈顶元素是〔A 〕.8 .链栈与顺序栈相比,有一个比拟明显的优点是〔B 〕.9 .从一个栈顶指针为top 的链栈中删除一个结点时,用x 保存被删除的结点,应执行以下〔d 〕命令.A.x=top;top->next;B.top=top->next;x=top->dataC.x=top->data;D.x=top->data;top=top->next 10 .在一个栈顶指针为HS 的链栈中,将一个S 指针所指的结点入栈,应执行以下〔B 〕命令.B.S->next=HS->next;HS->next=S;A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便 A.HS->next=S C.S->next=HS->next;HS=S;D.S->next=HS=HS->next11 .4元素按A 、B 、C 、D 顺序进S 栈,执彳T 两次Pop 〔S,x 〕运算后,栈顶元素的值是〔B 〕.B.B12 .元素A 、B 、C 、D 依次进栈以后,栈底元素是〔A 〕.A.AB.BC.CD.D13 .经过以下栈的运算后,再执行ReadTop 〔s 〕的值是〔A 〕.InitStack(s);Push(s,a);Push(s,b);Pob(s); A.aB.bC.1D.0 14.经过以下栈的运算后,x 的值是〔B 〕.InitStack(s)(初始化栈);Push(s,a);Push(s,b);ReadTop(s) ;Pob(s,x);A.aB.bC.1D.015 .经过以下栈的运算后,x 的值是(B ).InitStack(s)(初始化栈);Push(s,a);Pob(s,x);Push(s,b);Pob(s,x); A.aB.bC.1D.016 .经过以下栈的运算后,SEmpty(s)的值是(C ).InitStack(s)(初始化栈);Push(s,a);Push(s,b);Pob(s,x);Pob(s,x);LSA.AB.BC.CD.D第4章队列、判断题1 .队列是限制在两端进行操作的线性表.〔,〕2 .判断顺序队列为空的标准是头指针和尾指针都指向同一个结点.〔,〕3 .在链队列上做出队操作时,会改变front 指针的值.〔X 〕4 .在循环队列中,假设尾指针rear 大于头指针front,其元素个数为rear-front .〔V 〕5 .在单向循环链表中,假设头指针为h,那么p 所指结点为尾结点的条件是p=h .〔X 〕6 .链队列在一定范围内不会出现队满的情况.〔,〕7 .在循环链队列中无溢出现象.〔X 〕8 .栈和队列都是顺序存储的线性结构.〔X 〕9 .在队列中允许删除的一端称为队尾.〔X 〕10 .顺序队和循环队关于队满和队空的判断条件是一样的.〔x 〕二、填空题1 .在队列中存取数据应遵循的原那么是先进先出.2 .队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算线性表.3 .在队列中,允许插入的一端称为队尾.4 .在队列中,允许删除的一端称为队首〔或队头〕.5 .队列在进行出队操作时,首先要判断队列是否为空.6 .顺序队列在进行入队操作时,首先在判断队列是否为满.7 .顺序队列初始化后,初始化后,front=rear=-1.8 .解决顺序队列“假溢出〞的方法是采用循环队列.9 .循环队列的队指针为front,队尾指针为rear,那么队空的条件为front==rear .10 .链队列LQ 为空时,LQ->front->next=NULL .11 .设长度为n 的链队列用单循环表表示,假设只设头指针,那么入队操作的时间复杂度为O 〔n 〕.12 .设长度为n 的链队列用单循环表表示,假设只设尾指针,那么入队操作的时间复杂度为O 〔1〕.13 .在一个链队列中,假设队首指针与队尾指针的值相同,那么表示该队列为空.14 .设循环队列的头指针front 指向队首元素,尾指针rear 指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,那么队满标志为front==〔rear+1〕%MAXLEN .15 .在一个链队列中,假设队首指针为front,队尾指针为rear,那么判断队列只有一个结点的条件为front==rear 或front!.16 .向一个循环队列中插入元素时,首先要判断队尾指针,然后再向指针所指的位置写入新的数据.17 .读队首元素的操作不改变或不影响队列元素的个数. 17. A.aB.b 向顺序栈中输入元素时〔B 〕.A.先存入元素,后移动栈顶指针 C.1 D.018. C.谁先谁后无关紧要 初始化一个空间大小为 19. 20. A.0 设有一个入栈的次序 A. EDCBA 设有一个顺序栈S, 5的顺序栈S 后, B. -1 A 、B 、C 、D 、E, 元素A 、 E 、A,那么栈的容量至少应是〔 B. B.DECBA B 、C 、D 、 A ).4 B.先移动栈顶指针,后存入元素D.同时进行S->top 的值是〔B 〕. C.不再改变 那么栈不可能的输出序列是〔 C.DCEAB D.动态变化〕°D.ABCDEE 、F 依次进栈,如果6个元素出栈的顺序是B 、D 、D.6C 、F 、18.设循环队列的容量为40〔序号0〜39〕,现经过一系列的入队和出队的运算后,front=11,rear=19,那么循环队列中还有8个元素.19.队列Q,经过以下运算:InitQueue〔Q〕〔初始化队列〕;InQueue〔Q,a〕;InQueue〔Q,b〕;OutQueue〔Q,x〕;ReadFront〔Q,x〕;QEmpty〔Q〕;后的值是8.20.队列Q经过InitQueue〔Q〕〔初始化队列〕;InQueue〔Q,a〕;InQueue〔Q,b〕;ReadFront〔Q,x〕后,x的值是a.三、选择题1.队列是限定在〔D〕进行操作的线性表.A.中间者B.队首C.队尾D.端点2.队列中的元素个数是〔B〕.A.不变的B.可变的C.任意的D.03.同一队列内的各元素的类型〔A〕.13.队列Q,经过以下运算后,x 的值是〔B 〕.InitQueue 〔Q 〕〔初始化队列〕;InQueue 〔Q,a 〕;InQueue 〔Q,b 〕;15 .设链栈中结点的结构:data 为数据域,next 为指针域,且top 是栈顶指针,假设想在链栈的栈顶插入一个由指针s 所指的结点,那么应执行以下〔A 〕操作.A.s->next=top->next;top->next=s;B.top->next=s;C.s->next=top;top->next;D.s->next=top;top=s;16 .带头结点的链队LQ 示意图如下,链队列的队头元素是〔A.AB.BC.CD.D17 .带头结点的链队列LQ 示意图如下,指向链队列的队头指针是〔C 〕.4.5.6.7.8.9. A.必须一致B.不能一致 队列是一个〔C 〕线性表结构. A.不加限制的B.推广了的C.可以不一致 C.加了限制的 当利用大小为n 的数组顺序存储一个队列时,该队列的最后一个元素的下标为〔 A.n-2 B.n-1 C.nD.不限制 D.非 B). D.n+1 一个循环队列一旦说明,其占用空间的大小〔 A.已固定B.可以变动 循环队列占用的空间〔A 〕. A). C.不能固定 D.动态变化 A.必须连续 存放循环队列元素的数组 A.0〜10 假设进队的序列为A 、B 、 A.B 、C 、D 、A B.不必连续 data 有10个元素,那么 B.0〜9 C 、D,那么出队的序列是〔 C.不能连续 D.可以不连续 data 数组的下标范围是〔B 〕. 10. 4个元素按 A.A 11. 4个元素按 A.A 12. 4个元素按 后的值是〔 A.0A 、 A 、 A 、 B).B 、 B 、 B 、C 、 C 、 C 、 B.A 、C 、D 顺序连续进队 B.B D 顺序连续进队 B.B D 顺序连续进队 B 、D C.1〜9 C). C.A 、B 、C 、 那么队尾元素是(D) C.C 执行一次QutQueue(Q) C.C 执行4次QutQueue(Q) B.1 C.2 D.1〜10D.C 、B 、D 、AD.D操作后,队头元素是〔B 〕.D.D操作后,再执行QEmpty 〔Q 〕D.3 OutQueue(Q,x);ReadFront(Q,x)A.aB.b14.循环队列SQ 队满的条件是(B).A.SQ->rear==SQ->front C.SQ->rear==0C.0D.1B.(SQ->rear+1)%MAXLEN==SQ->front D.SQ->front==0 A ).LQ->frontLQ->rearLQ->rear A.LQ->frontB.LQ->rearC.LQ->front->nextD.LQ->rear->next18 .带头结点的链队列LQ 示意图如下,在进行进队的运算时指针LQ->frnot(A).19 .队歹UQ,经过以下运算后,再执行QEmpty 〔Q 〕的值是〔C 〕. A.始终不改变 B.有时改变 C.进队时改变LQ->rear D.出队时改变 LQ->frontInitQueue(Q)(ReadQueue(Q,x)A.a初始化队列〕;InQueue〔Q,a〕;InQueue(Q,b) ;OutQueue(Q,x);B.b20.假设用一个大小为6数组来实现循环队列,且当前C.0front和rear的值分别为D.13和0,当从队列中删除一个元素,再参加两个元素后, A.5和1 front和rear的值分别为〔B〕.B.4和2C.2和4D.1和510第5章串一、判断题1.串是n个字母的有限序列.〔X〕2.串的数据元素是一个字符.〔,〕3.串的长度是指串中不同字符的个数.〔X〕4.如果两个串含有相同的字符,那么说明它们相等.〔X〕5.如果一个串中所有的字母均在另一个串中出现,那么说明前者是后者的子串.〔X〕6.串的堆分配存储是一种动态存储结构.〔,〕7.“DT〞是“DATA〞的子串.〔X〕8.串中任意个字符组成的子序列称为该串的子串.〔X〕9.子串的定位运算称为模式匹配.〔,〕10.在链串中为了提升存储密度,应该增大结点的大小.〔,〕二、填空题1.由零个或多个字符组成的有限序列称为字符串〔或串〕.2.字符串按存储方式可以分为顺序存储、链接存储和堆分配存储.3.串的顺序存储结构简称为顺序串.4.串顺序存储非紧凑格式的缺点是空间利用率低.5.串顺序存储紧凑格式的缺点是对串的字符处理效率低.6.串链接存储的优点是插入、删除方便,缺点是空间利用率.7.在C或C++语言中,以字符\0表示串值的终结.8.空格串的长度等于空格的个数.9.在空串和空格串中,长度不为0的是空格串.10.两个串相等是指两个串长度相等,且对应位置的字符都相同.11.设“S=MyMusic〞,贝ULenStr〔s〕=8.12.两个字符串分别为;S I="Todayis"、S="30July,2022",ConcatStr〔S1,S2〕的结果是Todayis30July,2022.13.求子串函数SubStr〔"Todayis30July,2022",13,4〕的结果是July.14.在串的运算中,EqualStr〔aaa,aab〕的返回值<0.15.在串的运算中,EqualStr〔aaa,aaa〕的返回值0.16.在子串的定位运算中,被匹配的主串称为目标串,子串称为模式.17.模式匹配成功的起始位置称为有效位移.18.设S="abccdcdccbaa",T="cdcc",贝U第6次匹配成功.19.设S="c:/mydocument/text1.doc",T="mydont",那么字符定位的位置为0.20.假设n为主串长度,m为子串长度,n>>m,那么模式匹配算法最坏情况下的时间复杂度为〔n-m+1〕*m.1.串是和种特殊的线性表,其特殊表达在〔B〕.A.可能顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符2.某串的长度小于一常数,那么采用〔B〕存储方式最节省空间.A.链式B.顺序C.堆结构D.无法确定3.以下论述正确的选项是〔C〕.A.空串与空格串是相同的B."tel"是“Teleptone〞的子串C.空串是零个字符的串D.空串的长度等于14.以下论述正确的选项是〔B〕.A.空串与空格串是相同的B."ton"是“Teleptone 〞的子串C.空格串是有空格的串D.空串的长度等于15 .以下论断正确的选项是〔A 〕.A,全部由空格组成的串是空格串B."BEUIJING"是“BEIJING 〞的子串C.something"<"Something"D.BIT="BITE6 .设有两个串S I 和S 2,那么EqualStr 〔S I ,S 2〕运算称作〔D 〕.A.串连接B.模式匹配C.求子串D.串比拟7 .串的模式匹配是指〔D 〕.A.判断两个串是否相等B.对两个串比拟大小C.找某字符在主串中第一次出现的位置D.找某子串在主串中第一次出现的第一个字符位置8 .假设字符串"ABCDEFG 〞采用链式存储,假设每个字符占用1个字节,每个指针占用2个字节.那么该字符串的存储密度为〔D 〕.A.20%B.40%C.50%D.33.3%9 .假设字符串"ABCDEFG 〞采用链式存储,假设每个指针占用2个字节,假设希望存储密度为50%,那么每个结点应存储〔A 〕个字符.A.2B.3C.4D.510 .设串S I ="IAM",S 2="ASDUDENT",那么ConcatStr 〔S 1,S 2〕=〔B 〕.A."IAM"B."IAMASDUDENT"C."IAMASDUDENT 〞D."ASDUDENT11 .设S="〞,贝ULenStr 〔S 尸〔A 〕.A.0B.1C.2D.312 .设目标串T="AABBCCDDE",模式P="ABCDE",那么该模式匹配的有效位移为〔A 〕.A.0B.1C.2D.313 .设目标串T="AABBCCDDEEFF",模式P="CCD",那么该模式匹配的有效位移为〔D 〕.A.2B.3C.4D.514 .设目标串T="aabaababaabaa ,模式P="abab ,模式匹配算法的外层循环进行了〔D 〕次.LenStr 〔S2〕,2〕〕的结果串为〔D 〕. 15. 16. 17. 18. 19. A.1 B.9 模式匹配算法在最坏情况下的时间复杂是〔 A.O(m)S="morningB.O(n)C.4D.5 D). C.O(m+n) ,执行求子串函数SubSur 〔S,2,2〕后结果为〔B 〕. A .〞mo 〞 S 1="good,S2"morning A.〞goodmorning 〞D.〞GOODMORNING S 1="good A.〞good 设串S 1=" ,82="morning ABCDEFG:S B. or 〞 B.〞 执行函数 B.〞ning 〞"PQRST 〞, C in ConcatStr(Sgoodmorning 〞D.O(mxn) D .〞ng 〞1,S 2)后结果为(A). C.〞GOODMORNING 〞 SubSur(S 2,4,LenStr(S 1))后的结果为(B).C go 贝UConcatStr(SubStr(S1, 2,D.〞 LenStr(S 2)), _〞 morn SubStr(S1,。

数据结构练习题(含答案)

数据结构练习题(含答案)

1.1 单项选择题运算等的课程。

① A.操作对象 B.计算方法 C.逻辑结构 D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为 DS= (D, R),其中D 是①的有限集合,R 是D 上的②有限集 合。

① A.算法 B.数据元素 C.数据操作 D.数据对象 ② A.操作B.映象C.存储D.关系在数据结构中,从逻辑上可以把数据结构分成 。

A. 动态结构和静态结构B.紧凑结构和非紧凑结构1.2 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括 、和 三种类型,树形结构和图形结构合称为 。

2. 在线性结构中,第一个结点 前驱结点,其余每个结点有且只有 个前驱结点;最后一个结点 后续结 点,其余每个结点有且只有 ■个后续结点。

3. 在树形结构中,树根结点没有 结点,其余每个结点有且只有 个直接前驱结点,叶子结点没有 结点, 其余每个结点的直接后续结点可以 。

4. 在图形结构中,每个结点的前驱结点数和后续结点数可以 。

5.6. 线性结构中兀素之间存在算法的五个重要特性是_ _____ 关系,树形结构中兀素之间存在 ________ 关系,图形结构中兀素之间存在 ___ , — __ , __ , _ ,_ __ 。

____ 关系。

7. 分析卜面算法(程序段) for(i=0;i<n;i++)for (j=0;j<n; j++) A[i][j]=0; ,给出取大语句频度 _____ ,该算法的时间复杂度正 .。

8. 分析卜面算法(程序段)for (i=0;i<n;i++) for (j=0;j<i; j++) A[i][j]=0;,给出取大语句频度 ____ ,该算法的时间复杂度正 _________O9.分析卜面算法(程序段) ,给出取大语句频度 ____ ,该算法的时间复杂度正 _________ 。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题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. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

数据结构习题(包含全部答案解析).doc

数据结构习题(包含全部答案解析).doc

数据结构习题集(自编)第一章绪论一、选择题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章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(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.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

数据结构习题72724

数据结构习题72724

数据结构习题72724数据结构习题及解析第6 章树和⼆叉树基础知识题6.1①已知⼀棵树边的集合为{ ,,}请画出这棵树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶⼦结点?(3)哪个是结点G的双亲?(4)哪些是结点G的祖先?(5)哪些是结点G的孩⼦?(6)哪些是结点E的⼦孙?(7)哪些是结点E的兄弟?哪些是结点F的兄弟?(8)结点B和N的层次号分别是什么?(9)树的深度是多少?(10)以结点C为根的⼦树的深度是多少?6.2①⼀棵度为2的树与⼀棵⼆叉树有何区别?6.3①试分别画出具有3个结点的树和3个结点的⼆叉树的所有不同形态。

6.4③⼀棵深度为H的满k叉树有如下性质;第H层上的结点都是叶⼦结点,其余各层上每个结点都有k棵⾮空⼦树,如果按层次顺序从1开始对全部结点的编号,问:(1)各层的结点树⽬是多少?(2)编号为p的结点的⽗结点(若存在)的编号是多少?(3)编号为p的结点的第i 个⼉⼦结点(若存在)的编号是多少?(4)编号为p的结点有右兄弟的条件什么?其右兄弟的编号是多少?6.5②已知⼀棵树为k的树中有n1个度为1的结点,n2个度为2的结点,…n k个度为k 的结点,问该树中有多少个叶⼦结点?6.6③已知在⼀棵含有n个结点的树中,只有度为k的分⽀结点和度为0的叶⼦结点.试求该树含有的叶⼦结点的数⽬.6.7③⼀棵含有n个结点的k叉树,可能达到的最⼤深度和最⼩深度各为多少?6.8④证明:⼀棵满k叉树上的叶⼦结点数n0和⾮叶⼦结点数n1 之间满⾜以下关系:n0 =(k - 1)n1+ 16.9②试分别推导出含有n个结点和含有n0个叶⼦结点的完全三叉树的深度H。

6.10④对于那些所有⾮叶⼦结点均有⾮空左右⼦树的⼆叉树:(1)试问:有n个叶⼦结点的树中共有多少个结点?(2)试证明:∑2-(l i-1)=1 其中n 为叶⼦节点的个数,l i表⽰第i 个叶⼦节点所在的层次(设根结点所在层次为1)。

6.11③在⼆叉树的顺序存储结构中,实际上隐含这双亲的信息,因此可和三叉链表对应。

数据结构习题(含答案)

数据结构习题(含答案)

第一章绪论一、填空题1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。

_________是数据的基本单位;___________是数据的最小单位。

通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。

2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。

3.已知某数据结构的二元组形式表示为: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>}。

则此数据结构属于_____________结构。

4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;成平方关系时,则表示为__________。

5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。

6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。

7.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。

数据结构与算法智慧树知到期末考试章节课后题库2024年长安大学

数据结构与算法智慧树知到期末考试章节课后题库2024年长安大学

数据结构与算法智慧树知到期末考试答案章节题库2024年长安大学1.以下可以用于定义一个完整的数据结构的是()。

答案:抽象数据类型2.以下关于数据结构的说法中,正确的是()。

答案:数据的逻辑结构独立于其存储结构3.算法的时间复杂度主要取决于()。

答案:问题的规模4.答案:对5.计算算法的时间复杂度是属于一种()。

答案:事前分析估算的方法6.在一个单链表中,若删除p所指向结点的后续结点,则所需修改指针的操作为()。

答案:p->next=p->next->next;7.线性表L=(a1,a2,……,an),下列说法正确的是()。

答案:除第一个和最后一个元素外,其余每个元素都由一个且仅有一个直接前驱和直接后继8.在长度为n的顺序表中删除第i (1≤i≤n) 个元素时,需向前移动()个元素。

答案:n-i9.设线性表有2n个元素,以下操作中,在单链表上实现要比在顺序表上实现效率更高的()。

答案:删除指定元素10.如果线性表最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

答案:仅有尾指针的单循环链表11.栈是()。

答案:限制存取点的线性结构12.一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是()。

答案:d,c,e,a,b13.判断一个循环队列Q(最多n个元素)为满的条件是()。

答案:Q->front==(Q->rear+1)%n14.在解决计算机主机和打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取走数据打印。

该缓冲区应该是一个()结构。

答案:队列15.在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为()。

答案:rear->next=s; rear=s;16.与线性表相比,串的插入和删除操作的特点是()。

答案:通常以串整体作为操作对象17.对一些特殊矩阵采用压缩存储的目的主要是为了()。

数据结构考试题库含答案

数据结构考试题库含答案

数据结构习题集含答案目录目录 (1)选择题 (2)第一章绪论 (2)第二章线性表 (4)第三章栈和队列 (5)第四章串 (6)第五章数组和广义表 (7)第六章树和二叉树 (7)第七章图 (9)第八章查找 (11)第九章排序 (12)简答题 (15)第一章绪论 (15)第二章线性表 (20)第三章栈和队列 (22)第四章串 (24)第五章数组和广义表 (24)第六章树和二叉树 (26)第七章图 (31)第八章查找 (33)第九章排序 (34)编程题 (36)第一章绪论 (36)第二章线性表 (36)第三章栈和队列 (46)第四章串 (46)第五章数组和广义表 (46)第六章树和二叉树 (46)第七章图 (46)第八章查找 (46)第九章排序 (52)选择题第一章绪论1. 数据结构这门学科是针对什么问题而产生的?(A )A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2. 数据结构这门学科的研究内容下面选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3. 某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下面关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学生成绩表是数据元素,90分是数据项B、某班级的学生成绩表是数据对象,90分是数据元素C、某班级的学生成绩表是数据对象,90分是数据项D、某班级的学生成绩表是数据元素,90分是数据元素4. *数据结构是指(A )。

A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义5. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。

A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构6. 算法分析的目的是(C )A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改进D、分析算法的易懂性和文档型性7. 算法分析的主要方法(A )。

数据结构练习题与答案

数据结构练习题与答案

数据结构练习题与答案一、单选题(共100题,每题1分,共100分)1、顺序查找法适用于存储结构为( )的线性表。

A、压缩存储B、顺序存储或链式存储C、散列存储D、索引存储正确答案:B2、在索引查找中,若用于保存数据元素的主表的长度为144,它被均分为12子表,每个子表的长度均为12,则索引查找的平均查找长度为( )。

A、79B、24C、13D、12正确答案:C3、设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。

A、2mB、2m-1C、4mD、2m+1正确答案:A4、设无向图G中有n个顶点,则该无向图的最小生成树上有()条边。

A、2nB、n-1C、2n-1D、n正确答案:B5、在完全二叉树中,若一个结点是叶结点,则它没有( )A、左孩子结点B、右孩子结点C、左孩子结点和右孩子结点D、左孩子结点,右孩子结点和兄弟结点正确答案:C6、设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

A、线性结构B、树型结构C、图型结构D、集合正确答案:C7、下列排序算法中,第一趟排序结束后其最大或最小元素一定在其最终位置上的算法是( )。

A、冒泡排序B、直接插入排序C、快速排序D、归并排序正确答案:A8、假设以数组A[m]存放循环队列的元素。

已知队列的长度为length,指针rear指向队尾元素的下一个存储位置,则队头元素所在的存储位置为( )A、(rear-length+m+1)%mB、(rear-length+m)%mC、(rear-length+m-1)%mD、(rear-length)%m正确答案:B9、在下面的程序段中,对x的赋值语句的频度为()。

for ( i=1; n>=i ; i++) for ( j=1; n>=j ; j++) x=x+1;A、O(log2n)B、O(2^n)C、O(n^2)D、O(n)正确答案:C10、具有4个顶点的无向完全图有( )条边。

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

数据结构习题及解析第6 章树和二叉树基础知识题6.1①已知一棵树边的集合为{ <I,M>,<I,N> <E,I><B,E><B,D><A,B><G,J><G,K><C,G><C,F>,<H,L><C,H><A,C>}请画出这棵树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶子结点?(3)哪个是结点G的双亲?(4)哪些是结点G的祖先?(5)哪些是结点G的孩子?(6)哪些是结点E的子孙?(7)哪些是结点E的兄弟?哪些是结点F的兄弟?(8)结点B和N的层次号分别是什么?(9)树的深度是多少?(10)以结点C为根的子树的深度是多少?6.2①一棵度为2的树与一棵二叉树有何区别?6.3①试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

6.4③一棵深度为H的满k叉树有如下性质;第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树,如果按层次顺序从1开始对全部结点的编号,问:(1)各层的结点树目是多少?(2)编号为p的结点的父结点(若存在)的编号是多少?(3)编号为p的结点的第i 个儿子结点(若存在)的编号是多少?(4)编号为p的结点有右兄弟的条件什么?其右兄弟的编号是多少?6.5②已知一棵树为k的树中有n1个度为1的结点,n2个度为2的结点,…n k个度为k 的结点,问该树中有多少个叶子结点?6.6③已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点.试求该树含有的叶子结点的数目.6.7③一棵含有n个结点的k叉树,可能达到的最大深度和最小深度各为多少?6.8④证明:一棵满k叉树上的叶子结点数n0和非叶子结点数n1 之间满足以下关系:n0 =(k - 1)n1+ 16.9②试分别推导出含有n个结点和含有n0个叶子结点的完全三叉树的深度H。

6.10④对于那些所有非叶子结点均有非空左右子树的二叉树:(1)试问:有n个叶子结点的树中共有多少个结点?(2)试证明:∑2-(l i-1)=1 其中n 为叶子节点的个数,l i表示第i 个叶子节点所在的层次(设根结点所在层次为1)。

6.11③在二叉树的顺序存储结构中,实际上隐含这双亲的信息,因此可和三叉链表对应。

假设每个指针域占4个字节的存储,每个信息域占k 个字节的存储,试问:对于一棵有n 个结点的二叉树,且在顺序存储结构中最后一个结点的下标为m ,在什么条件下顺序存储结构比三叉链表更节省空间?6.12② 对应6.3所得各种形态的二叉树,分别写出前序、中序、后序遍历的序列。

6.13② 假设n 和m 为二叉树中二结点,用“1”、“0”或“φ”(分别表示肯定、恰恰相反或者不一定)填写下表:注意:如果(1)离a 和 b 最近的共同祖先p 存在且(2)a 在p 的左子树中,b 在p 的右子树中,则称a 在b 的左方(即b 在a 的右方)。

6.14② 找出所有满足下列条件的二叉树;(a ) 它们在先序遍历和中序遍历时,得到的结点访问序列相同; (b ) 它们在后序遍历和中序遍历时,得到的结点访问序列相同;(c ) 它们在先序遍历和后序遍历时,得到的结点访问序列相同;6.15②请对右图所示二叉树进行后序线索化,为每个空指针建立相应的前驱或后继线索。

6.16②将下列二叉链表改为先序线索链表(不画出树的形态)。

6.17③阅读下列算法,若有错,则改之。

BiTree InSucc(BiTree q){// 已知q 是指向中序线索二叉树上某个结点的指针,// 本函数返回指向*q的后继的指针。

r= q->rchild;if (!r->rtag)while (!r->rtag) r=r->rchild;return r;} //InSucc6.18⑤试讨论,能否在一棵中序全线索二叉树上查找给定结点*p 在后序序列中的后继。

6.19 ②分别画出和下列树对应的各个二叉树;6.20③将下列森林转换为相应的二叉树,并分别按以下说明进行线索化;(1)先序前驱线索化;(2)中序全线索化;(3)后序后继线索化。

6.21②画出和下列二叉树相应的森林;6.22②对于6.19题中给出的各树分别求出以下遍历序列;(1)先序遍历(2)后序遍历6.23②画出和下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHG树的后跟次序访问序列为DIAEKFCJHBG。

6.24③画出和下列已知序列对应的森林F:森林的先根次序访问序列为ABCDEFGHIJKL树的后跟次序访问序列为CBEFDGAJIKLH。

6.25③证明:在结点数多于1的哈夫曼树中不存在度为1的结点。

6.26③假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别是0.07。

0.19,0.02,0.06,0.32,0.03,0.21,0.10。

试为这8个字母设计哈夫编码,使用0——7的二进制表示形式是另一种编码方案,对于上述实例,比较这两种方案的优缺点。

6.27③假设一棵二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。

请画出树。

6.28③假设一棵二叉树的中序序列为D CBGEAHFIJK和后序序列为DCEGBFHKJIA。

请画出树。

6.29③假设一棵二叉树的层序序列为ABCDEFGHIJ和中序序列为DBGEHJACIF。

请画出树。

6.30④证明:树中结点u 是结点v的祖先,当且仅当在先序序列中u在v之前,且在后序序列中u在v之后。

6.31④证明:由一棵二叉树的先序序列和中序序列可唯一确定这棵二叉树。

6.32⑤证明;如果一棵二叉树的先序序列是u1,u2…. u n 中序序列为u p1 u p2…..u p p则序列1,2,…..,n可以通过一个栈得到序列p1,p2…. p n ;反之,若以上述中的结论作为前提,则存在一棵二叉树,若其前序序列是u1,u2…. u n ,则其中序序列为u p1 u p2…..u p p.算法设计题6.33③假定用两个一维数组L[1…n]和R[1..n]作为有n个结点的二叉树的存储结构,L[i]和R[i]分别指出结点i的左孩子和右孩子,0表示空,试写一算法判别结点是否为结点V的子孙.6.34③同6.33题条件。

先由L和R建立一维数组T[1…n],使T中第i ( i=1,2,…n )个分量指示结点i 的双亲,然后写判别结点u是否为结点v的子孙的算法.6.35③假设二叉树中左分支的标号为”0”,右分支的标号为”1”,并对二叉树增设一个头结点,令根结点为其右孩子,则从头结点到树中任一点所经分支的序列为一个二进制序列,可以作是某个十进制数的二进制表示.例如,右图所示二叉树中,和节点A对应的二进制序列为”110”,即十进制整数6的二进制表示,已知一棵非空二叉树以顺序存储结构表示,试写一尽可能简单的算法,求出与树的顺序存储结构中下标值为i 的结点对应的十进制数.以下6.36至6.38和6.41至6.53题中,均以二叉链表作为二叉树的存储结构.6.36③若已知两棵二叉树B1和B2皆为空,或者皆不为空且B1的左右子树和B2的左子树分别相似,则称二叉树B1和B2相似,试编写算法,判别给定两棵二叉树是否相似.6.37③试利用栈的基本操作写出先序遍历的非递归形式的算法。

6.38④同6.37条件,写出后序遍历的非递归形式的算法(提示:为分辨后序遍历时两次进栈的不同返回点,需在指针进栈时同时将一个标志进栈)。

6.39④若在二叉链表的结点中增设两个域:双亲域(parent)以指示其双亲结点,标志域(mark取值0….2)以区分在遍历过程中达到该结点时应继续向左或向右或访问该结点,试以存储结构编写不用栈进行后序遍历的递推形式的算法。

6.40③若在二叉链表的结点中只增设一个双亲域以指示其双亲结点,则在遍历过程中能否不设栈?试以存储结构编写不设栈进行中序遍历的递推形式的算法。

6.41③编写递归算,在二叉树中求位于先序序列中第k个位置的结点的值。

6.42③编写递归算法,计算二叉树中叶子结点的数目。

6.43③编写递归算法,将二叉树中所有结点的左、右子树相互交换。

6.44④编写递归算法,求二叉树中以元素值为x 的结点为根的子树的深度。

6.45④编写递归算法,对于二叉树中的每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。

6.46③编写复制一棵二叉树的非递归算法。

6.47⑤已知在二叉树中,*root 为根结点,*p和*q为二叉树中的两个结点,试编写求距离它们最近的共同祖先的算法。

6.48④编写按层次顺序中(同一层自左向右)遍历二叉树的算法。

6.49④编写算法判别给定二叉树是否为完全二叉树。

6.50⑤假设以三元组(F,C,L/R)的形式输入一棵二叉树的诸边(其中F表示双亲结点的标识,C表示孩子结点标识,L/R表示C为F的左孩子或右孩子),且在输入的三元组序列中,C是按层次顺序出现的,设结点的标识是字符型,F=‘^‘时C为根结点标识,若C也为‘^‘,则表示输入结束,例如,6.15题所示二叉树的三元组序列输入格式为:^ALABLACRBDLCELCFRDGRFHL^^L试编写算法,由输入的三元数组序列建二叉树的二叉链表。

6.51⑤编写算法,输出以二叉树表示的算术表达式,若该表达式中含有括号,则在输出时应添上。

6.52④一棵二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积,试写一算法求二叉树的繁茂度。

6.53⑤试编写算法,求给定二叉树上从根结点到叶子结点的一条其路径长度等于树的深度减一的路径(即列出从根结点到该叶子结点的结点序列),若这样的路径存在多条,则输出路径终点(叶子结点)在“最左”的时间复杂度。

6.54③已知一棵完全二叉树存于顺序表sa中,sa.elm[st]含结点值。

试编写算法由此顺序存储结构建立该二叉树的二叉链表。

6.55④二叉链表的结点增加DescNum域,试编写算法,求二叉树的每个结点的子孙数目并存入其DescNum域。

请给出算法的时间复杂度。

6.56③试写一个算法,在先序后继线索二叉树中,查找给定结点*p在先序序列中的后继(假设二叉树的根结点未知)。

并讨论实现此算法对存储结构有何要求?6.57③试编写一算法,在后序后继线索二叉树中,查找给定结点*p在后序序列中的后继(二叉树的根结点指针并为给出),并讨论实现算法对存储结构有何要求?6.58试写出一算法,在中序全线索二叉树的结点*p之下,插入一棵以结点*x为根只有左子树的中序全线索二叉树,使*x为根的二叉树成为*p的左子树,若*p原来有左子树,则令它为*x 的右子树,完成插入之后的二叉树应保持全线索化特性。

相关文档
最新文档