《数据结构》习题2

合集下载

数据结构课后习题及解析第二章

数据结构课后习题及解析第二章
利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
例如m的初值为20;n=7,7个人的密码依次是:3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。
第二章答案
约瑟夫环问题
约瑟夫问题的一种描述为:编号1,2,…,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出出列顺序。利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
9.假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表某个结点的指针,试编写算法在链表中删除指针s所指结点的前趋结点。
10.已知有单链表表示的线性表中含有三类字符的数据元素(如字母字符、数字字符和其它字符),试编写算法来构造三个以循环链表表示的线性表,使每个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。
r=p;
}
}
r->next=L->next;
printf("请输入第一个报数上限值m(m>0):");
scanf("%d",&m);
printf("*****************************************\n");
printf("出列的顺序为:\n");
q=L;
p=L->next;
7.试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。

数据结构练习题2[1]

数据结构练习题2[1]

1、3个结点可构成棵不同形态的树。

2、利用直接选择排序算法对n个记录进行排序,最坏的情况下,记录交换的次数为。

3、一个图的_______表示法是唯一的,而______表示法是不唯一的。

4、一棵深度为h的满二叉树上的结点总数为,一棵深度为h的完全二叉树上的结点总数的最小值为,最大值为。

5、在一棵完全二叉树中有n个结点,对这些结点按层序编号,若一个结点编号为69,则其双亲编号为,有左孩子的条件是,其左孩子编号为。

6、二维数组M的成员是6个字符组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要________个字节;M的第8列和第5行共占___________个字节;若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先方式存储时的________元素的起始地址一致。

7、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是________。

8、在线性表的顺序存储中,元素之间的逻辑关系是通过决定的;在线性表的链式存储中,元素之间的逻辑关系是通过_________决定的。

9、n个顶点的连通图的生成树有n-1条边。

10、通常数组只有______给定一组有定义的下标,存取相应的数据__和___给定一组有定义的下标,修改相应数据元素的值_____两种运算,因此常采用__顺序_______来存储数组。

11、3个节点可以构成 5 棵不同形态的二叉树。

12、对于一棵具有n个结点的二叉树,当它为一棵完全二叉树时具有最小高度,即为∟log2n」+1,当它为一棵单支树时具有最大高度,即为n 。

13、在一棵有n个结点的完全二叉树中,对这些结点按层序编号,若一个结点编号为59,则其双亲编号为,若一个结点编号为23,则其有右孩子的条件是。

14、数组M中每个元素的长度是3个字节,行下标i从1到8,列下标j从1到10,从首地址EA开始连续存放在存储器中。

数据结构课后习题第2章

数据结构课后习题第2章

2. 指针 P 指向不带头结点的线性链表 L 的首元素的条件是( )。
A.P= =L
C.P-﹥next==L
B.L-﹥Next==P
D.P-﹥next==NULL
3. 指针 p 指向带头结点的单循环链表 L 的首元素的条件是( )。
A.P= =L
C.P-﹥next==L
B.L-﹥Next==P
D.P-﹥next==NULL
网络工程 2011 级 1 班、计算机科学与技术 2011 级 2 班《算法与数据结构》课后习题(第 2 章)
2011 级 计科 (网工)
题号
得分

【课后习题】第 2 章 线性表
班 学号:
一、判断题(如果正确,在题号前打“”,否则打“”。每题 2 分,共 10 分)

( ) 1. 线性表若采用顺序存储表示时所有结点之间的存储单元地址必须连续。 ( ) 2. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 ( ) 3. 如果某个数据结构的每一个元素都是最多只有一个直接前驱,则必为线性结构。 ( ) 4. 线性表的逻辑顺序与物理顺序总是一致的。 ( ) 5. 线性表的长度是指它所占存储空间的大小。
二、填空题(每空 1.5 分,共 21 分)
1. 从逻辑结构看,线性表是典型的
2. 在一个长度为 n 的向量中在第 i(1≤i≤n+1)个元素之前插入一个元素时,需向后移动
个元素,算法的时间复杂度为
3. 在一个长度为 n 的向量中删除第 i(1≤i≤n)个元素时,需向前移动
算法的时间复杂度为


4. 若长度为 n 的线性表采用链式存储结构,在其第 i 个结点前插入一个新的元素的算法的

数据结构C语言版部分习题及答案[2]

数据结构C语言版部分习题及答案[2]

第二章习题与解答一判断题1.线性表的逻辑顺序与存储顺序总是一致的。

2.顺序存储的线性表可以按序号随机存取。

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。

6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。

7.线性表的链式存储结构优于顺序存储结构。

8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。

9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。

10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

二单选题 (请从下列A,B,C,D选项中选择一项)1.线性表是( ) 。

(A) 一个有限序列,可以为空;(B) 一个有限序列,不能为空;(C) 一个无限序列,可以为空;(D) 一个无序序列,不能为空。

2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的()个元素。

(A) n/2 (B) n+1/2 (C) n -1/2 (D) n3.线性表采用链式存储时,其地址( ) 。

(A) 必须是连续的;(B) 部分地址必须是连续的;(C) 一定是不连续的;(D) 连续与否均可以。

4.用链表表示线性表的优点是()。

(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。

(A)单链表(B)双链表(C)单循环链表(D)带头结点的双循环链表6.循环链表的主要优点是( )。

(A)不在需要头指针了(B)已知某个结点的位置后,能够容易找到他的直接前趋(C)在进行插入、删除运算时,能更好的保证链表不断开(D)从表中的任意结点出发都能扫描到整个链表7.下面关于线性表的叙述错误的是( )。

数据结构习题及答案 (2)

数据结构习题及答案 (2)

第二章线性表一、选择题1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )(A)110 (B)108(C)100 (D)120参考答案:B2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

(A)64(B)63 (C)63.5 (D)7参考答案:C3.线性表采用链式存储结构时,其地址()。

(A) 必须是连续的 (B) 部分地址必须是连续的(C) 一定是不连续的 (D) 连续与否均可以参考答案:D4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()(A)s->next=p;p->next=s; (B) s->next=p->next;p->next=s;(C)s->next=p->next;p=s; (D)p->next=s;s->next=p;参考答案:B5.在一个单链表中,若删除p所指结点的后续结点,则执行()(A)p->next=p->next->next; (B)p=p->next; p->next=p->next->next;(C)p->next=p->next; (D)p =p->next->next;参考答案:A6.下列有关线性表的叙述中,正确的是()(A)线性表中的元素之间隔是线性关系(B)线性表中至少有一个元素(C)线性表中任何一个元素有且仅有一个直接前趋(D)线性表中任何一个元素有且仅有一个直接后继参考答案:A7.线性表是具有n个()的有限序列(n≠0)(A)表元素(B)字符(C)数据元素(D)数据项参考答案:C二、判断题1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。

()2.如果没有提供指针类型的语言,就无法构造链式结构。

()3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。

数据结构复习题 (2)

数据结构复习题 (2)

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打×)第1章(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。

(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。

(×)(3)数据元素是数据的最小单位。

(×)(4)数据项是数据的基本单位。

(×)(5)数据的逻辑结构和数据的存储结构是相同的。

(√)(6)数据的逻辑结构是各数据元素之间的逻辑关系,是用户按使用需要而建立的。

(√)(7)数据的物理结构是指数据在计算机内实际的存储形式。

(√)(8)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

(√)(9)数据的存储结构是数据的逻辑结构的存储映像。

(√)(10)算法是对解题方法和步骤的描述。

第2章(×)(1)链表的物理存储结构具有同链表一样的顺序。

(×)(2)链表的每个结点都恰好包含一个指针域。

(√)(3)线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。

(×)(4)链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。

(×)(5)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

(√)(6)数组元素的存储位置是下标的线性函数。

(√)(7)在单链表中,元素的存储位置用指针联系,所以可以从头结点开始查找任何一个元素。

(×)(8)顺序存储线性表的插入和删除操作不需要付出很大的代价,因为平均每次移动仅一半的元素。

(×)(9)顺序存储方式的优点是存储密度大,插入、删除效率高。

(×)(10)在单链表中,要取得某个元素,只要知道该元素的指针即可,因此单链表是随机存取的存储结构。

第3章(√)(1)大多数排序算法都有比较关键字大小和改变指向记录的指针或移动记录本身两种基本操作。

数据结构课后习题与解析第二章

数据结构课后习题与解析第二章

第二章习题1. 描述以下三个概念的区别:头指针,头结点,首元素结点。

2. 填空:(1)在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。

(2)在顺序表中,逻辑上相邻的元素,其物理位置相邻。

在单链表中,逻辑上相邻的元素,其物理位置相邻。

(3)在带头结点的非空单链表中,头结点的存储位置由指示,首元素结点的存储位置由指示,除首元素结点外,其它任一元素结点的存储位置由指示。

3.已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。

按要求从下列语句中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是:。

b. 在P结点前插入S结点的语句序列是:。

c. 在表首插入S结点的语句序列是:。

d. 在表尾插入S结点的语句序列是:。

供选择的语句有:(1)P->next=S;(2)P->next= P->next->next;(3)P->next= S->next;(4)S->next= P->next;(5)S->next= L;(6)S->next= NULL;(7)Q= P;(8)while(P->next!=Q) P=P->next;(9)while(P->next!=NULL) P=P->next;(10)P= Q;(11)P= L;(12)L= S;(13)L= P;4. 设线性表存于a(1:arrsize)的前elenum个分量中且递增有序。

试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。

5. 写一算法,从顺序表中删除自第i个元素开始的k个元素。

6. 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。

试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。

计算机数据结构习题2附答案.

计算机数据结构习题2附答案.

第六章图1、填空题一个有 n 个结点的无向图中,所有顶点的度数之和等于所有边数之和的 _2__倍。

一个有 n 个结点的强连通图,最多有 _n(n-1_/2__条边,最少有 ___n-1_ 条边。

在一个无向图中,所有顶点的度数之和等于所有边数之和的 __2____倍。

2、判断题1无向图的邻接矩阵一定是对称矩阵。

(√2有向图的邻接矩阵一定是对称矩阵。

(×3图的深度优先搜索路径是唯一的。

(×4图的广度优先搜索路径不是唯一的。

(√5一个图可能存在多棵最小生成树。

(√6无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的。

(√7图的关键路径是指从源点到汇点的最短路径。

(×8用邻接矩阵法存储图,占用的存储空间数量只与图中边数有关,与结点个数无关。

(×9对一个图分别进行深度优先搜索和广度优先搜索,得到的结点序列一定是相同的。

(×10图的关键路径是指从源点到汇点的最长路径。

(√3、选择题1一个无向连通图的生成树是含有该连通图的全部顶点的 __A__。

A 、极小连通子图B 、极小子图C 、极大连通子图D 、极大子图 2具有 e 条边的有向图,它的邻接表中有 _D__个弧结点。

A 、 e-1B 、 2eC 、 2(e-1D 、 e3如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是 __D__A 、无向图B 、完全图C 、强连通图D 、有向无环图4顶点个数为 n 的有向图最多有 __D_条弧。

A 、 n-1B 、 n(n-1/2C 、 n(n+1/2D 、 n(n-1应用题:1. 请给出图 1的所有最小生成树。

(10分图 1共两棵。

第一棵为:(5分错一条边扣 1分。

第二棵为:(5分错一条边扣 1分。

2. 请给出图 2的所有拓扑排序序列。

(16答案如下:仅有两个第一个:abcdefgh (错一个字符扣 1分第二个:abcdegfh (错一个字符扣 1分3、对于有向无环图(如图 3,写出它的所有不同的拓扑有序序列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题2.11 题2.19 题2.20 题2.24 题2.38
题2.12 题2.21 题2.27 题2.41
结束放映
题2.22
题2.30
题2.11
顺序表 设顺序表va中的数据元素 递增有序 递增有序。试写一算法,将x插 入到顺序表的适当位置上,以 保持该表的有序性。
题2.12
分析:
已知 A=(a1, a2, …, am) B=(b1, b2, …, bn) 均为顺序表,试编写一个比较 A¸ B大小的算法。
题2.20
同2.19题条件(线性表中的元素以 值递增有序排列,单链表作存储结构。), 试写一高效的算法,删除表中所有 值相同的多余元素(使得操作后的 线性表中所有元素的值各不相同), 同时释放被删结点空间,并分析你 算法的时间复杂度。
题2.21
试写一算法,对顺序表 就地逆置 实现就地逆置。
题2.22
题2.19
删除有序表中所有其值大于 mink 且 小于maxk的数据元素。 q
……
首先分析需要删除的结点的特点:
pre p
<=mink
>mink
< next = p;
释放结点: while (q!=p) {s=q->next; free(q); q=s; }
题2.24
La
q
将两个非递减有序的有序表归并为非 递增的有序表(利用原表结点)。
pa q 23 q pb 32 43 48 54 pa pa 34 45 56
12
Lb
q pb 11 ∧
Lc

例 2-2 的第二种算法 在单链表中的具体实现。
q->next = Lc->next; Lc->next = q; // 插入
假设以两个元素值递增有序排列的线性表 A和B分别表示两个集合(同一表中元素值各不 相同),现要求另外开辟空间构成一个线性表C, 其元素为A和B中元素的交集,且C中元素也递增 有序排列,对顺序表完成此算法。 题2.27
对上述的条件做如下修改,在顺序表存储结 构上实现求表C的算法: (1)假设在同一表(A或B)中可能存在值相同的元 素,但要求新生成的表C中的元素各不相同; (2)利用A表空间存放表C。
试写一算法,对单链表 就地逆置 实现就地逆置。
分析 :
逐个把 L 的当前元素 q 插入 新链表头部, p 为新表表头。
题2.24
假设有两个按数据元素值递增 有序排列的线性表A和B,均以单 链表作为存储结构。请编写算法将 A表和B表归并成一个按元素值递 减有序(即非递增有序,允许表中 含有值相同的元素)排列的线性表 C,并要求利用原表(即A表和B表) 结点空间构造C表。
1. 算法的目标是分析两个表的大小,则 算法中不应当破坏原表; 2. 按题意,表的大小指的是“词典次 序”,则不应当先比较两个表的长度; 3. 算法中的基本操作为:同步比较两 个表中相应的数据元素。
题2.19
递增 已知线性表中的元素以值递增 有序 单链表 有序排列,并以单链表作存储结构。 试写一高效的算法,删除表中所有 值大于mink且小于maxk的元素(若 表中存在这样的元素),同时释放 被删结点空间,并分析你的算法的 时间复杂度。 时间复杂度
设有一个双向循环链表,每个结点 中除有prior,data和next三个域外,还增设 了一个访问频度域freq.在链表被起用之 前,频度域freq的值均初始化为零,而每 当对链表进行一次LOCATE(L,x)的操作 后,被访问的结点中的频度域freq的值增 加1,同时调整链表中结点之间的次序, 使其按访问频度非递增的次序顺序排 列, 以便始终保持被频访问的结点总是 靠近表头结点.试编写符合上述要求的 LOCATE操作的算法。
题2.30
已知A,B和C为三个递增的有 序的线性表,现要求对A表做如下 操作:删去那些既在B表中出现又 在C表中出现的元素,试对顺序表 编写实现上述操作的算法,并分析 你的算法的时间复杂度(注意:题 中没有特别指明同一表中的元素值 各不相同)。试对单链表编写算法, 请释放A表中的无用结点空间。
题2.38
题2.41
试以循环链表作为稀疏多项 式的存储结构,编写求其导函数的 算法,要求利用原多项式中的结点 空间存放其导函数(多项式),同时 释放所有无用(被删)结点。
相关文档
最新文档