数据结构 习题选讲
课后习题讲解(数据结构)

课后习题讲解(数据结构)第 1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶ 从逻辑关系上讲,数据结构主要分为()、()、()和()。
【解答】集合,线性结构,树结构,图结构⑷ 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸ 算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹ 算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺ 在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴ 顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
数据结构习题讲述

《数据结构》习题第一章绪论一、单选或填空题1. 下列程序段中S语句的执行频度为。
for(i=0;i<n;i++ )for(j=0;j<i;j++ )S;2. 下列算法的时间复杂度是()。
for(i=0;i<n;i++ )c[i]=i;3. 算法的时间复杂度可表示为O(1)、线性阶、平方阶O(n2)、对数阶O(logn)和指数阶O(2n)等。
4 以下关于数据结构的基本概念中,叙述正确的是A) 数据元素是数据不可分割的最小单位。
B) 数据是数据对象的子集。
C) 数据元素之间的关系在计算机中可用顺序映像和非顺序映像两种不同的方法表示。
D) 数据结构在计算机中的表示又称为逻辑结构。
5. 在数据结构中,数据的逻辑结构包括()。
A) 线性结构和非线性结构B) 逻辑结构和物理结构C) 顺序结构和链式结构D) 虚拟结构和抽象结构6. 在数据结构中,数据的存储结构包括。
A) 线性结构和非线性结构B)逻辑结构和物理结构C) 顺序结构和链式结构D) 虚拟结构和抽象结构第二章线性表1.线性结构的数据元素之间存在一种( )。
A.一对多关系B.多对多关系C.多对一关系D.一对一关系2. 在长度为n的顺序表中插入一个元素,需要平均移动个元素。
A) n/2 B)nC) n(n-1) D) n(n+1)3. 在有n个元素的顺序表中做插入、删除运算,平均时间复杂度为。
4. 顺序表中逻辑上相邻的元素物理位置相邻,单链表中逻辑上相邻的元素的物理位置相邻。
A)必然、必然B)必然、不一定C)不一定、必然D)不一定、不一定5.相对于顺序存储而言,链式存储的优点是()。
A.随机存取B.节约空间C.增、删操作方便D.节点间关系简单6. 以下关于头结点的描述中,叙述错误..的是A) 头结点是对链表首元结点的别称B) 若链表中附设头结点,则头指针一定不为空C) 头结点中不存储链表的数据元素,而是一些诸如表长之类的辅助信息D) 在单链表中附设头结点,插入或删除首元素时不必进行特殊处理7.已知L是无表头结点的单链表,且P所指结点既不是首元结点,也不是尾元结点,则在P之后插入S所指结点,则执行()。
数据结构试题(含答案)讲解

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。
2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。
A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。
A s→link = p→link;p→link = s;B p→link = s; s→link = q;C p→link = s→link;s→link = p;D q→link = s;s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。
A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。
A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。
A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。
A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。
10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。
A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。
数据结构试题讲解

1999-2004年数据结构研究生入学考试题讲解电子科技大学计算机学院尚明生整理一 基本情况1 题型: 单选/多选,填空,解答/简答,算法(修改,填空,设计)2 章节大致分布表1 历年题目章节(大致)分布1999 2000 2001 2002 2003 20040 0 0 2 0 10 Chapter01Chapter02 5 5 8 10 0 20 Chapter03 0 5 5 2 12 100 10 2 1 7 2 Chapter05Chapter06 20 5 25 22 29 12 Chapter07 10 15 6 6 14 2010 5 0 5 14 2 Chapter095 5 3 26 2 Chapter10注: (1)很多题目存在交叉,不完全属于某个章节(2)重点章节是2,6,7,其中2,3章不应分离看待二 试题讲解1.第一章[1999][2000][2001][2002][2分]1.在数据结构中,从逻辑上可以把数据结构分为线性结构和非线性结构。
[2003][2004][10分,10/75]2.线性表有哪两种存储结构?在这两种存储结构中元素之间的逻辑关系分别是通过什么决定的?答:有顺序和链式存储结构,顺序结构中元素之间的逻辑关系由物理存储位置决定,链式结构中元素之间的逻辑关系由链指针决定。
3.对线性表、栈、队列、二叉树、图和广义表六种数据结构,按能表示数据元素之间的最复杂联系在下表中打勾。
多对多较1对多复杂,1对多较1对1复杂。
线性表栈队列二叉树图广义表多对多√√1对多√1对1 √√√【总结】:2.第二章[1999][解答5分,10%]1.阅读下面算法,指出其中的所有的错误。
(5分)FUNC length(head: linklist):integer;{求以head为头指针的不带头结点的循环单链表的长度}f:=head;WHILE f<>head DO [n:=n+1; p:=p↑.link];RETURN(n)ENDF;{length}答:(1)n未初始化为0;(1分)(2)循环条件不对,应为WHILE f↑.link<>head DO(2分)(3)循环变量f的值应在循环体内改变,即p应改为f(1 分)(4)未处理空表的情形(1分)正确的算法是:FUNC length(head: linklist):integer;{求以head为头指针的不带头结点的循环单链表的长度}n:=0;IF head<>NIL THEN [p:=head↑.link; n:=1;WHILE p<>head DO [n:=n+1; p:=p↑.link]];RETURN(n)ENDF;{length}[2000][5分,10%]2.在线性表的顺序和链式存储结构下,试分析下表各种基本运算的时间复杂度,并填入相应的表格中。
李春葆数据结构习题与解析

一、绪论选择题1.数据结构是一门研究非数值计算的程序设计问题计算机的以及它们之间的和运算等的学科。
1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像2 A.结构 B.关系 C.运算 D.算法2.数据结构被形式地定义为(K, R),其中K是的有限集,R是K上的有限集。
1 A.算法 B.数据元素 C.数据操作 D.逻辑结构2 A.操作 B.映像 C.存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构的顺序存储结构是一种的存储结构,线性表的链式存储结构是一种的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取5.算法分析的目的是,算法分析的两个主要方面是。
1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2 A.空间复杂度和时间复杂度 B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性6.计算机算法指的是,它必须具备输入、输出和等5个特性。
1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。
A.正确B.不正确8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。
A.必须连续的B.部分地址必须连续的C.一定是不续的D连续不连续都可以9.以下的叙述中,正确的是。
A.线性表的存储结构优于链式存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。
A.正确B.不正确填空题1.数据逻辑结构包括三种类型、和,树形结构和图形结构合称为。
数据结构 习题讲解

A、在P结点后插入S结点的语句序列是_________ B 、在P结点前插入S结点的语句序列是_________ C、在表首插入S结点的语句序列________ D、在表尾插入S结点的语句序列_________
4、写出下列程序段的输出结果(队列的元素类型为 char;字符型)。
Void main() {
Queue Q; InitQueue(Q); char x=‘e’,y=‘c’; EnQueue(Q,’h’); EnQueue(Q,’r’); EnQueue(Q,y); DeQueue(Q,x); EnQueue(Q,x); DeQueue(Q,x); EnQueue(Q,’a’); while(!QueueEmpty(Q)) { DeQueue(Q,y); printf(y); } printf(x); }
(10)p=q;
(11)p=L;
(12)l=s;
(12)l=s;
2、简述堆栈、队列和线性表之间的区别。
3、写出下列程序段的输出结果(栈的元素类型为 char;字符型)。
Void main() {
Stack S; Char x,y; InitStack(S); X=‘c’; y=‘k’; Push(S,x); Push(S,’a’); Push(S,y); Pop(S,x); Push(S,,’s’); While(!StackEmpty(S)){Pop(S,y); printf(y); }; Printf(x); }
(1)p->next=s;
(2)p->next=p->next->next;
数据结构题库及答案详解

数据结构题库及答案详解一、选择题1. 在数据结构中,线性结构的特点是什么?A. 结构中存在唯一的开始结点和终端结点B. 结构中所有结点的前驱和后继都存在C. 结构中所有结点都只有一个直接前驱和一个直接后继D. 结构中存在多个开始结点和终端结点答案:C2. 栈是一种特殊的线性表,其特点是:A. 先进先出B. 先进后出C. 可以同时在两端进行插入和删除操作D. 只能在一端进行插入和删除操作答案:D3. 在二叉树的遍历算法中,先序遍历的顺序是:A. 先访问根结点,然后遍历左子树,最后遍历右子树B. 先遍历左子树,然后访问根结点,最后遍历右子树C. 先遍历右子树,然后访问根结点,最后遍历左子树D. 先遍历左右子树,最后访问根结点答案:A二、填空题4. 在图的遍历中,______算法可以避免重复访问同一顶点。
5. 哈希表的冲突可以通过______方法来解决。
答案:4. 深度优先搜索(DFS)5. 链地址法或开放地址法三、简答题6. 简述排序算法中的快速排序算法的基本原理。
答案:快速排序算法是一种分治算法,它通过选择一个元素作为“基准”,然后将数组分为两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素。
然后对这两个子数组递归地应用快速排序算法。
7. 解释什么是递归,并给出一个递归函数的例子。
答案:递归是一种在函数中调用自身的编程技术。
递归函数必须有一个明确的终止条件,以避免无限递归。
例如,计算阶乘的递归函数如下:```int factorial(int n) {if (n == 0) return 1; // 终止条件return n * factorial(n - 1); // 递归调用}```四、编程题8. 编写一个函数,实现单链表的反转。
答案:```c// 假设ListNode是链表节点的定义ListNode* reverseList(ListNode* head) {ListNode* prev = NULL;ListNode* curr = head;ListNode* next = NULL;while (curr != NULL) {next = curr->next; // 保存下一个节点curr->next = prev; // 反转指针prev = curr; // 移动prevcurr = next; // 移动curr}return prev; // 新的头节点}```9. 给定一个整数数组,请实现一个函数来找到数组中的最长连续子序列的长度。
数据结构

. . .
. .
.
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. .
. .
. .
. .
.
Claris
高级数据结构题选讲 (二)
Odwiedziny
. . .
. .
.
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. .
. .
. .
. .
.
Claris
高级数据结构题选讲 (二)
Minimum Cut
给定一张 n 个点,m 条边的无向图,并给出它的一棵生成 树 T。 你需要删去一些边,使得剩下的图不连通,且删去的边中必 须恰好包含一条树边。 求最少删去的边数。 2 ≤ n ≤ 20000, n − 1 ≤ m ≤ 200000。
. . .
. .
.
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. .
. .
. .
. .
.
Claris
高级数据结构题选讲 (二)
Minimum Cut
枚举树上的每一条边,将其删掉后,树分裂成了两部分,必 须删掉所有横跨两部分的非树边。
. . .
. .
. . .
. .
.
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. .
. .
. .
. .
.
Claris
高级数据结构题选讲 (二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3)345,829,765,542,412,395,341,363
4)965,741,259,478,375,349,360,363
A)仅1)2) B)仅1) 2)3)
a
C)仅1)4) D)仅2)
13
13、对序列 { 15, 9, 7, 8, 20, -1, 4 } 用希尔排序
方法排序,经一趟后序列变为{ 15, -1, 4, 8, 20,
B.S[top]=x; top += 1;
c
C.top -= 1; S[top]=x;
D.S[top]=x; top --;
5
5、下列说法正确的是( )
b
(1) 稀疏矩阵压缩存储后,必会失去随机存取功能。
(2) 若一个广义表的表头为空表,则此广义表亦为空表。
(3) 广义表的取表尾运算,其结果通常是个表,但有时 也可是个单元素值。
9, 7 },则该次采用的增量是( )
d
A.1 B.2
C.3
D.4
14
14、下列说法中,错误的是( ) a (1) 外部排序是把外存文件调入内存,可利用内
部排序的方法进行排序,因此排序所花的时间 取决于内部排序的时间 (2) 在外部排序时,利用败者树方法选择当前最 小关键字过程的复杂度取决于归并的路数。 (3) 影响外排序的时间因素主要是内存与外设交 换信息的总次数。 A.仅(1) B.仅(1)(2) C.仅(2)(3) D.(1)(2)(3)
(4) 从逻辑结构上看,n维数组是由多个n-1维的数组构 成。
A.仅(1)(2)
B.仅(1)(4)
C.仅(2)(3)
D.仅(3)(4)
6
6、下列说法错误的是( )
c
① 在图G的最小生成树G1中,可能会有某条边 的权值超过未选边的权值。
Hale Waihona Puke ② 不同求最小生成树的方法得到的生成树是相 同的.
③ 当改变网上某一关键路径上任一关键活动后, 必将产生不同的关键路径
15
15、有n个叶子的哈夫曼树的结点总数为 d ( )。
A.不确定 D.2n-1
B.2n
C.2n+1
16
填空题
1、用S表示入栈操作,X表示出栈操作,若元 素入栈的顺序为1234,为了得到1342出栈顺序, 相应的S和X的操作串为( )。
2、若用一个大小为6的数组来实现循环队列, 且当前rear和front的值分别为0和3,当从队列 中删除一个元素,再加入两个元素后,rear和 front的值分别为( )。
习题选讲
数据结构与算法分析
1
一.单项选择题
1、下面程序段的时间复杂度为() b ◦ A. O (n) B. O (n^2) ◦ C. O (n(n-1)/2) D. O (logn)
void fun1(int n) {
x = 0; for ( i=0; i<n; i++ )
for ( j=i+1; j<n; j++ ) x++;
10
10、已知有向图G=(V,E),其中V={ V1, V2, V3, V4, V5, V6, V7 },E={ <V1,V2>, <V1,V3>,
<V1,V4>, <V2,V5>, <V3,V5>, <V3,V6>,
<V4,V6>, <V5,V7>, <V6,V7> },G的拓扑序列
是( )
A.V1, V3, V4, V6, V2, V5, V7
C.表必须有序,而且只能从小到大排列
D.表必须有序,且表只能以顺序方式存储
12
12、设二叉排序树中关键字由1到1 000的整数组成, 现要查找关键字为363的结点,下述关键字序列中 不可能是在二叉排序树中查到的序列( )
1)51,250,501,382,320,340,390,363
2)24,877,125,342,421,623,501,363
a
B.V1, V3, V2, V6, V4, V5, V7
C.V1, V3, V4, V5, V2, V6, V7
D.V1, V2, V5, V3, V4, V6, V7
11
11、下面关于折半查找的叙述中,正确的是
()
d
A.表必须有序,表可以顺序方式存储,也可
以链表方式存储
B.表必须有序且表中数据必须是整型,实型 或字符型
式为( )
d
◦ A.-A+B*C/DE
◦ B.-A+B*CD/E
◦ C.-+*ABC/DE
◦ D.-+A*BC/DE
9
9、设森林F中有三棵树,第1、第2和第3棵树 的结点个数分别为M1、M2和M3(M1,M2, M3皆大于0)。与森林F对应的二叉树根结点 的右子树上的结点个数是( )
d
◦ A.M1 ◦ B.M1+M2 ◦ C.M3 ◦ D.M2+M3
④ 网络的最小生成树是唯一的
◦ A12 B23 C234 D14
7
7、有n个叶子的哈夫曼树中分支节点总数为
( )。
a
A.n-1
B.2n+1
C.n+1
D.不确定
n+n2 = 2n2+1
n = n2+1
n2 = n-1
8
8、已知一算术表达式的中缀形式为:A+B*C-
D/E,后缀形式为:ABC*+DE/-,则其前缀形
}
2
2、若某线性表最常用的操作是删除最后一个 结点,则采用存储结构算法的时间效率最高的
是()
◦ a. 单链表
d
◦ b. 给出表尾指针的单循环链表
◦ c. 双向链表
◦ d. 给出表尾指针双向循环链表
3
3、在单链表指针为p的结点之后插入指针为s的 结点,正确的操作是( )
A.p->next=s; s->next=p->next;
S×SS×S××
2和4
17
3、广义表A = ( a, b, ( (c, d), (e, (f, g)) ) ),则 Head( Tail( Head( Tail( Tail( A ) ) ) ) ) 的值为 ( )。
4、在一棵高度为4的完全3叉树中,结点总数 在( )之间。
5、假设一个森林由4个节点构成,则森林可能 的形态有( )种(假设森林中的树不计顺序, 树中的各个子树也不计顺序)。
b
B.s->next=p->next; p->next=s;
C.p->next=s; p->next=s->next;
D.s->next=p; p->next=s;
4
4、若一个栈以向量 S[ 1..n ] 存储,初始栈顶指 针top为n+1,则下面x进栈的正确操作是( )
A.top += 1; S[top]=x;