山东专升本计算机专业数据结构练习题.docx
- 文档编号:7549366
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:92
- 大小:1.30MB
山东专升本计算机专业数据结构练习题.docx
《山东专升本计算机专业数据结构练习题.docx》由会员分享,可在线阅读,更多相关《山东专升本计算机专业数据结构练习题.docx(92页珍藏版)》请在冰豆网上搜索。
山东专升本计算机专业数据结构练习题
测试一下自己的水平
一、判断题(每小题1分,共15分)
1.非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。
( )
2.数组是一种没有插入与删除操作的线性结构。
( )
3.稀疏矩阵中值为0的元素分布有规律,因此可以采用三元组方法进行压缩存储。
( )
4.空串与由空格组成的串没有区别。
( )
5.将T在S中首次出现的位置作为T在S中的位置的操作称为串的模式匹配。
( )
6.深度为h的非空二叉树的第i层最多有2h-1个结点。
( )
7.完全二叉树就是满二叉树。
( )
8.已知一棵二叉树的前序序列和中序序列可以唯一地构造出该二叉树。
( )
9.非空二叉排序树的任意一棵子树也是二叉排序树。
( )
10.有向图是一种非线性结构。
( )
11.带权连通图的最小生成树的权值之和一定小于它的其它生成树的权值之和。
( )
12.AOE网是一种带权的无环连通图。
( )
13.折半查找方法适用于按值有序的线性链表的查找。
( )
14.哈希表的查找效率主要取决于所选择的哈希函数与处理冲突的方法。
( )
15.选择排序过程中元素之间的比较次数与原始序列的状态无关。
( )
二、单项选择题(每小题2分,共20分)
1.若长度为n的线性表采用顺序存储结构,删除它的第i数据元素之前,需要先依次向前移动_______个数据元素。
( )
A.n-iB.n+iC.n-i-1D.n-i+1
2.在单链表中,已知q指的结点是q指的结点的直接前驱结点,若在q和p指的结点之间插入一个由s指的结点,则需执行________。
( )
A.link(s)←link(p),link(p)←s
B.link(q)←s,link(s)←p
C.link(p)←link(s),link(s)←p
D.link(p)←s,link(s)←q
3.在非空双向循环链表中由q所指的那个链结点前面插入一个由p指的链结点的动作对应的语句依次为:
rlink(p)←q,llink(p)←llink(q),llink←p,_________。
(空白处为一条赋值语句)
A.rlink(q)←p
B.rlink(llink(q)←p
C.rlink(llink(p))←p
D.rlink(rlink(p)←p
4.为了节省存储空间,将n阶对称矩阵A中包括主对角线元素在内的下三角部分的所有元素按
照行序为主序方式存放在一维数组B[1:
n(n-1)/2]中,对任意下三角部分的元素aij(i≥j)在B
的下标k是( )
A.i(i-1)/2+j
B.(i(i-1))/2+j
C.i(i+1)/2+j
B.(i(i+1))/2+j
5.某堆栈的输入序列为a,b,c,d,下面的四个序列中,__________不可能是它的输出序列。
( )
A.a,c,b,d
B.b,c,d,a
C.d,c,a,b
D.c,d,b,a
6.若非空队列采用链式存储结构,front和rear分别为队头元素与队列尾元素的指针,删除此时队列的一个元素的操作时依次执行p←front,_________________,callRET(P)。
( )
A.front←link(rear)
B.rear←link(p)
C.rear←link(front)
D.front←link(p)
7.中缀表达式A-(B+C)*D/E的后缀形式是_________________。
( )
A.ABC+-D*E/
B.ABC+D*-E/
C.ABC+D-*E/
D.ABC+D*E/-
8.广大义表A=((),(a),(b,(c,d)))的长度为( )
A.2
B.3
C.4
D.5
9.在初始为空的杂凑表中依次插入关键字序列(MON,TUE,WED,THU,FRI,SAT,SUN),杂凑函数为H(k)=iMOD7,其中,i为关键字k的第一个字母在英文字母表中的序号,地址值域为[0:
6],采用线性再散列法处理冲突。
插入后的杂凑表应该如________________所示。
( )
A.0 1 2 3 4 5 6
THUTUEWEDFRISUNSATMON
B.0 1 2 3 4 5 6
TUETHUWEDFRISUNSATMON
C.0 1 2 3 4 5 6
TUETHUWEDFRISATSUNMON
D.0 1 2 3 4 5 6
TUETHUWEDSUNSATFRIMON
10.从未排序序列中选择一个元素,该元素将未排序序列分成前后两个部分,前一部分中所有元素都小于等于所选元素。
后一部分中所有元素都大于等于所选元素,而所选元素处在排序的最终位置。
这种排序方法称为_____________排序法。
( )
A.插入
B.谢尔
C.快速
D.堆积
三、填空题(每小题2分,共20分)
1.已知具有n个元素的一维数组采用顺序存储结构,每个元素占k个存储单元,第一个元素的地址为LOC(a1),那么,LOC(ai)=___________________。
2.若一棵二叉树有10个叶结点,则该二叉树中度为2的结的点个数为______________。
3.具有n个结点的非空二叉排序树的最小深度为_______________。
4.深度为h且有_______________个结点的二叉树称为满二叉树。
(设根结点处在第1层)。
5.二叉树的前序遍历序列为A,B,C,E,F,D,G,H,中序遍历序列为A,E,C,F,B,G,D,H,其后序遍历序列为__________________。
6.已知序列(34,76,45,18,26,54,92,65,),按照逐点插入法建立一棵二叉排序列树,该树的深度是__________________。
7.一个不带有权的有向图采用邻接矩阵存储方法,其邻接矩阵是一个__________________。
8.带权连通图G=
(v2,v3)8,(v2,v4)4,(v2,v5)4,(v3,v4)6,(v4,v5)2,(注:
顶点偶对右边的数据为边上的权值),G的最小生成树的权值之和为__________________。
9.在线性表中采用折半查找法(二分查找法)查找一个数据元素,线性表中元素应该按值有序,并且采用______________存储方法。
10.若对序列(49,38,65,97,76,13,27,50)采用选择排序法排序,则第三趟结束后序列的状态是___________________。
四、问题求解题(每小题10分,共20分)
1.已知AOE网为G=(V,E),其中,
V={v1,v2,v3,v4,v5,v6,v7},
E={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10},
a1:
(v1,v2)3,a2:
(v1,v3)2,a3:
(v2,v4)1,a4:
(v2,v5)8,a5:
(v3,v4)3,
a6:
(v3,v6)7,a7:
(v4,v5)4,a8:
(v4,v6)2,a9:
(v5,v7)9,a10:
(v6,v7)6;
(注:
顶点偶对的右括号下方的数据表示该边上的权值)。
e[i]与l[i]分别表示活动a1的最早开始时间与最晚开始时间,请分别求出e[i]与l[i](1≤i≤10),填入下面的方格中。
e[1:
10]
l[1:
10]
2.若对序列(76,38,65,13,97,27,50,49)采用堆积排序法(按照值的大小从小到大)进行排序,请分别在下表中写出每一趟的结果:
原始序列 76 38 65 13 97 27 50 49
第1趟结果
第2趟结果
第3趟结果
第4趟结果
第5趟结果
第6趟结果
第7趟结果
第8趟结果
五、算法题(共25分)
1.已知长度为n的线性表A采用顺序存储结构,并且元素按值大小非递减排列,下面的算法删除线性表中多余的值相同的元素。
请在算法的空白处填入适当内容,使之能够正常工作。
(10分)
procedureDEL(A,n)
i←1
while____________ do
if(A[i]≠A[i+1]then
i←i+1
else //查找满足条件的元素//
[for_________do
A[j-1]←A[j]
end //删除第i+1个元素(满足条件的元素)//
______________] //修改线性表的长度//
end
end
2.已知非空线性链表的链结点的构造为|date|link|,第一个链结点的指针为list,下面的算法删除链表的第i个结点(设i>0)。
请在算法的空白处填入适当内容,使之能够正常工作。
(15分)
procedureDEL(list,i,item)
_____________ //给变量q赋初值//
if(i=1)then
list←link(q) //删除第一个链结点//
else
[ forj←1to______________do
r←q
q←link(q)
if_________then
[callERROR(i超过链表的长度!
’)
return]
end if //r与q分别指向第i-1个与第i个链结点//
_____________ ]//删除第i个链结点//
callRET(q) //删除被删除链结点的空间
end
第一章课堂练习
1.1判断题(在你认为正确的题后的括号中打√,否则打X)。
(1)程序与算法没有区别。
()
(2)程序设计框图就是一种图形化的算法。
()
(3)采用程序设计语言编写的程序也是算法。
()
(4)一个算法可以没有输入,但不能没有输出。
()
(5)顺序存储结构通过数据元素的地址直接反映数据元素间的逻辑关系。
()
(6)链式存储结构通过指针间接地反映数据元素之间的逻辑关系。
()
(7)数据的存储结构通常只有顺序存储结构与链式存储结构两种。
()
(8)具有相同逻辑结构的数据可以采用不同的存储结构。
()
(9)逻辑结构不相同的数据应该采用不同的存储结构。
()
(10)算法分析的前提是算法的时空效率高,()
1.2填空题。
(1)“数据结构”课程研究的主要内容包括——、——和——三个方面。
(2)一般情况下,算法独立于具体的——,与具体的程序设计语言——。
(3)一个完整的算法应该具有——、——、——、——和——五个特性。
(4)数据的逻辑结构可以分为——和——两大类。
(5)除了顺序存储结构与链式存储结构之外,数据的存储结构通常还有——和散列结构。
(6)数据的逻辑结构是指——,而存储结构是指——。
(7)逻辑上相邻的数据元素在物理位置上也相邻是——存储结构的特点之一。
(8)为了实现随机访问,线性结构应该采用——存储结构。
(9)链式存储结构的主要优点是——。
(10)算法分析主要从——和——这两个方面对算法进行分析。
1.3通常说数据结构是一个二元组(D,R),其中D,R分别代表什么?
1.4何谓数据的逻辑结构?
何谓数据的存储结构?
两者有何联系?
历年试题一
1.在数据结构中,数据的逻辑结构可以分成( )
A.内部结构和外部结构B.线性结构和非线性结构
C.紧凑结构和非紧揍结构D.动态结构和静态结构
2.下列说法正确的是( )
A.数据是数据元素的基本单位
B.数据元素是数据项中不可分割的最小标识单位
C.数据可由若干个数据元素构成
D.数据项可由若干个数据元素构成
3.数据结构的基本任务是( )
A.逻辑结构和存储结构的设计B.数据结构的运算实现
C.数据结构的评价与选择D.数据结构的设计与实现
4.在一个具有n个结点的有序单链表中插入一个新结点,并使插入后仍然有序,则该操作的时间复杂性量级为( )
A.O
(1)B.O(n)C.O(nlog2n)D.O(n2)
5.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为()
A.顺序存储结构B.链式存储结构
C.索引存储结构D.散列存储结构
6、选出正确的表述
(1)顺序存储方式只能用于存储线性结构。
(2)顺序存储方式的优点是存储密度大,且插入、删除运用算效率高。
(3)链表的每个结点中都恰好包含一个指针。
(4)散列法存储的基本思想是由关键码的值决定数据的存储地址。
(5)散列表的结点中只包含数据元素自身的信息,不包含任何指针。
(6)负载因子(装填因子)是散列法的一个重要参数,它反映散列表的装满程度。
(7)栈和队列的存储方式既可是顺序方式,也可是链接方式。
(8)用二叉链表法(llink--rlink法)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(9)用相邻矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。
(10)邻接表法只能用于有向图的存储,而相邻矩阵法对于有向图和无向图的存储都适用。
7.表示逻辑关系的存储结构可以有四种方式,即顺序存储方式、链式存储方式、_______________和散列存储方式。
8.下列程序段的时间复杂度为________________。
product=1;
for(i=n;i>0;i--)
for(j=i+1;j product*=j; 9.文件上的两类主要操作为________________和________________。 10.文件的基本运算包括______________和修改两类。 11.下列程序段的时间复杂性量级是_____________。 for(i=1;i for(j=1;j t=t+1; 12.若一个算法中的语句频度之和为T(n)=3720n+4nlogn,则算法的时间复杂度为________。 第二章课后辅导 例2.1已知长度为n的非空线性表A采用顺序存储结构,表中数据元素按值的大小非递减排列,请写出删除该线性表中值相同的多余元素的算法。 76543217654321 算法思想比较简单,只需从表的第一个数据元素开始到最后那个数据元素,反复做以下动作: 比较相邻的两个数据元素是否相同,若相同,则删除其中一个;若不相同,则比较下一对相邻元素。 算法如下: voidDELETEITEM1(ElemTypeA[],intn)) { intj,i=0; while(i if(A[i]! =A[i+1])/x若相邻两个元素不相同。 / i++; else{/*若相邻两个元素相同,则删除其中一个*/ for(j=i++;i A[j-1]=A[j]; n--;/x表长减1x/ } } } 上述算法的时间复杂度为O(n2)。 对算法进行改进,得到一个时间复杂度为O(n)的 算法不是很困难。 这里,设置两个整型变量i与k,它们的初值分别为1与0。 若在比较 过程中发现A[i]与A[k]不同,则先将k后移一个位置,然后将A[i]送到A[k]的位置上; 若A[i]与A[k]相同,只是将i后移一个位置。 当表中所有元素都处理完毕时,k+1正好 是删除多余元素以后线性表的长度。 改进后的算法如下: voidDELETEITEM2(ElemTypeA[],int&n) { intk,i; if(n>1){ k=0; for(i=1;i if(A[i]! =A[k])/x若A[i]与A[k]不相同时。 / A[++k]=A[i]; n=k+1;/。 得到删除以后的表长。 / } } 14.将两个按值有序的非空线性链表合并为一个按值有序的线性链表设lista与listb分别为两个有序链表第一个链结点的指针。 将这两个有序链表合并为一个有序链表,其第一个链结点的指针为listc。 这里,只需设置三个指针p,q和r,其中,p和q分别指向链表lista和链表listb当前待比较插入的链结点,而r指向链表listc中当前最后那个链结点。 然后不断地比较p与q 所指的链结点的数据域值,若p->data 当其中一个链表为空时,只需将另一个链表中剩余的链结点都依次链接到r所指的链结点之后即可。 初始时,让 listc指向lista和listb所指向的链结点中值小的那一个链结点。 LinkListMERGELIST(LinkListlista,LinkListlistb) { LinkListlistc,p,q,r; if(lista->dada<=listb->data){ listc=lista; r=lista; p=lista->link; } else{ listc=listb; r=listb; q=listb->link; }/xlistc指向lista和listb所指结点中值小者x/ while(p! =NULL&&q! =NULL){ if(p->data<=q->data){/x若当前p所指结点的值不大于q所指结点的值x/ r->link=p;/y将p所指结点链接到r所指结点之后x/ r=p; p=p->link; } else{ r->link=q;/。 将q所指结点链接到r所指结点之后‘/ r=q; q=q—>link; } } r->link=p? p=q;/x插人剩余链结点x/ return(listc);/x返回合并后的链表第一个链结点地址x/ } 若两个链表的长度分别为n与m,则上述算法的时间复杂度为O(n十m)。 在合并两 个链表为一个链表时不需要另外建立新链表的链结点空间,只需将给定的两个链表中的 链结点之间的链接关系解除,重新按照元素值的非递减关系将所有链结点链接成为一个 链表即可。 例2.5约瑟夫(Josephu)问题已知n个人(不妨以编号1,2,3,…,n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依此规则重复下去,直到圆桌周围的人全部出歹,J。 例如,当n: 8,m’4,k二3时,出列的顺序依次为6,2,7,4,3,5,1,8。 解决约瑟夫问题可以利用多种数据结构,但比较简单和自然的方法是利用一个具有n个链结点、且不带头结点的循环链表。 将圆桌周围的每一个人对应着该链表中的一个链结点,某个人出列相当于从链表中删除一个链结点。 下面的算法就是在该循环链表中不断地报数,不断地删除一个链结点,直到循环链表中还剩一个链结点时游戏结束。 整个算法可以分为三个部分: (1)建立一个具有n个链结点且无头结点的循环链表; (2)确定第一个报数点的位置; (3)不断地从链表中删除一个链结点,直至链表中还有一个链结点。 习题2.1 判断题(在你认为正确的题后的括号中打√,否则打X)。 (1)空线性表的特征是表中数据元素都未赋值。 () (2)线性表的顺序存储结构必须占用一片地址连续的存储单元。 () (3)用一维数组存储线性表时,表中第i个元素存放在下标为i的数组元素中。 () (4)采用顺序存储结构的线性表又称为顺序表。 () (5)—个数据元素的地址是指该元素占用的若干存储单元的第一个单元的地址。 () (6)线性表占用的存储单元的数量与表中数据元素的类型有关。 () (7)线性表的顺序存储结构要比链式存储结构节省存储空间。 () (8)线性表的链式存储结构要比顺序存储结构节省存储空间。 () (9)若线性表采用顺序存储结构,线性表的长度等于表中元素的个数与每个元素所占内存单元之乘积。 () (10)若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144则第1个数据元素的存储地址是101。 (100) (11)在长度为n的顺序表的第i个位置插入一个数据元素,i的合法值为1≤i≤N。 () (12)删除长度为n的顺序表的第i个数据元素,i的合法值为1≤i≤n。 () (13)在长度为n的顺序表中插入一个数据元素的时间复杂度为O(n)。 () (14)线性表的链式存储结构不必占用地址连续的存储空间。 () (15)链表中的每个链结点占用的存储空间不必连续。 () (16)一个链结点的地址是指该链结点占用的若干存储单元的第一个单元的地址。 () (17)非空线性链表的最后那个链结点的指针域不能为空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 山东 计算机专业 数据结构 练习题