山东专升本计算机专业数据结构练习题.docx
《山东专升本计算机专业数据结构练习题.docx》由会员分享,可在线阅读,更多相关《山东专升本计算机专业数据结构练习题.docx(15页珍藏版)》请在冰豆网上搜索。
山东专升本计算机专业数据结构练习题
山东专升本计算机专业数据结构练习题
济南铁道职业技术学院专升本辅导教材数据结构
测试一下自己的水平
一、判断题(每小题1分,共15分)
1.非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。
()2.数组是一种没有插入与删除操作的线性结构。
()
3.稀疏矩阵中值为0的元素分布有规律,因此可以采用三元组方法进行压缩存储。
()4.空串与空格组成的串没有区别。
()
5.将T在S中首次出现的位置作为T在S中的位置的操作称为串的模式匹配。
()6.深度为h的非空二叉树的第i层最多有2h-1个结点。
()7.完全二叉树就是满二叉树。
()
8.已知一棵二叉树的前序序列和中序序列可以唯一地构造出该二叉树。
()9.非空二叉排序树的任意一棵子树也是二叉排序树。
()10.有向图是一种非线性结构。
()
11.带权连通图的最小生成树的权值之和一定小于它的其它生成树的权值之和。
() 网是一种带权的无环连通图。
()
13.折半查找方法适用于按值有序的线性链表的查找。
()
14.哈希表的查找效率主要取决于所选择的哈希函数与处理冲突的方法。
()15.选择排序过程中元素之间的比较次数与原始序列的状态无关。
() 二、单项选择题(每小题2分,共xx年试题一
1.在数据结构中,数据的逻辑结构可以分成
A.内部结构和外部结构B.线性结构和非线性结构C.紧凑结构和非紧揍结构D.动态结构和静态结构2.下列说法正确的是
A.数据是数据元素的基本单位
B.数据元素是数据项中不可分割的最小标识单位C.数据可若干个数据元素构成D.数据项可若干个数据元素构成3.数据结构的基本任务是
A.逻辑结构和存储结构的设计B.数据结构的运算实现C.数据结构的评价与选择D.数据结构的设计与实现
4.在一个具有n个结点的有序单链表中插入一个新结点,并使插入后仍然有序,则该操作的时间复杂性量级为
2
A.OB.O C.OD.O(n)
5.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为() A.顺序存储结构 B.链式存储结构 C.索引存储结构 D.散列存储结构6、选出正确的表述
(1)顺序存储方式只能用于存储线性结构。
第5页共63页
济南铁道职业技术学院专升本辅导教材数据结构
(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;j9.文件上的两类主要操作为________________和________________。
10.文件的基本运算包括______________和修改两类。
11.下列程序段的时间复杂性量级是_____________。
for(i=1;it=t+1;
12.若一个算法中的语句频度之和为T(n)=3720n+4nlogn,则算法的时间复杂度为________。
第二章课后辅导
例2.1已知长度为n的非空线性表A采用顺序存储结构,表中数据元素按值的大小非递减排列,请写出删除该线性表中值相同的多余元素的算法。
76543217654321
算法思想比较简单,只需从表的第一个数据元素开始到最后那个数据元素,反复做以下动作:
比较相邻的两个数据元素是否相同,若相同,则删除其中一个;若不相同,则比较下一对相邻元素。
算法如下:
voidDELETEITEM1(ElemTypeA,intn)) {
intj,i=0; while(iif(A[i]!
=A[i+1]) /x若相邻两个元素不相同。
/ i++;
else{ /*若相邻两个元素相同,则删除其中一个*/ for(j=i++;in--; /x表长减1x/
第6页共63页
济南铁道职业技术学院专升本辅导教材数据结构
} } }
2
上述算法的时间复杂度为O(n)。
对算法进行改进,得到一个时间复杂度为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;iif(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->datadata,则将p指的链结点链接到r所指的链结点之后,否则将q指的链结点链接到r所指的链结点之后。
当其中一个链表为空时,只需将另一个链表中剩余的链结点都依次链接到r所指的链结点之后即可。
初始时,让
listc指向lista和listb所指向的链结点中值小的那一个链结点。
LinkListMERGELIST(LinkListlista,LinkListlistb) {
LinkListlistc,p,q,r; if(lista->dadadata){ 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->datadata){/x若当前p所指结点的值不大于q所指结点的值x/
第7页共63页
济南铁道职业技术学院专升本辅导教材数据结构
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)若线性表采用顺序存储结构,线性表的长度等于表中元素的个数与每个元素所占内存单元之乘积。
()
第8页共63页
济南铁道职业技术学院专升本辅导教材数据结构
(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)非空线性链表的最后那个链结点的指针域不能为空,应该存放NULL。
( ) (18)所谓空链表是指没有任何链结点的链表。
( ) (19)任何一个链表都可以根据需要设置一个头结点。
( ) (20)每个链表的前面都必须设置一个头结点。
( )
(21)线性链表(单向链表)中的每个链结点只有后继结点,没有前驱结点。
( ) (22)一个空的链表不占用任何存储空间。
( )
(23)若指针变量list指向一个空链表,则list中什么也没有。
( ) (24)无论出现在算法的什么地方,符号p->data表示的意思都一样。
( ) (25)在算法中,符号p->link表示p所指的下一个链结点的地址。
( )
(26)删除非空线性链表的第一个链结点只需执行语句list=list->link。
( )
(27)循环链表的最后那个链结点的指针域中存放着链表最前面那个结点的地址。
( ) (28)设置一个指针变量,它可以遍历整个循环链表。
( )
(29)双向链表的头结点指针要比线性链表的头结点指针占用更多的存储空间。
( ) (30)在链结点数目相同的前提下,双向链表占用的空间是线性链表的2倍。
( )单项选择题。
(1)一个顺序表所占用的存储空间大小与——无关。
A.表的长度 B.元素的存放顺序C.元素的类型 D。
元素中各字段的类型
(2)设存储分配是从低地址到高地址进行的。
若每个元素占用4个存储单元,则某元素的地址是指它所占用的单元的
A.第1个单元的地址 B.第2个单元的地址C.第3个单元的地址 n第4个单元的地址
(3)若线性表采用顺序存储结构,每个元素占用4个存储单元,第1个元素的存储地址为100,则第12个元素的存储地址是. 。
A.112 B.144 C.148 0.412
(4)若长度为n的线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,i的合法值应该是——。
A.i>O B.i≤n C.1≤i≤n D.1≤i≤n+1
(5)若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,i的合法值应该是A.i>O B.i≤n C.1≤i≤n D。
1≤i≤n十1
(6)若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表 中——个数据元素。
A.n-i B.n+i C.n-i+l D.n-i-1
(7)若长度为n的线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,需要移动 表中——个元素。
。
A.i B.n+i C.n-i+l D.n-i-1
(8)若频繁地对线性表进行插入和删除操作,该线性表应该采用——存储结构。
第9页共63页
济南铁道职业技术学院专升本辅导教材数据结构
A.散列 B.顺序 C.链式 D.索引(9)链表中所占用的存储单元地址一定是 。
A.无序的 B.连续的 C.不连续的 D.部分连续的(10)链表中的每一个链结点所占用的存储单元——。
A.不必连续 B.一定连续 C.部分连续 D.连续与否无所谓(11)与单链表相比,双向链表的优点之一是 。
A.插入、删除操作更简单 B.可以进行随机访问 C.可以省略头结点指针 D.顺序访问相邻结点更灵活
(12)若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域中存 放的是——。
A.1ist的地址 B.1ist的内容
C.1ist指的链结点的值 D.链表第一个链结点的地址
(13)若list是某带头结点的循环链表的头结点指针,当p(p与list同类型)指向链表的最后那 个链结点时,——。
A.该结点的指针域为空 B.p为空
C.p的内容与头结点的内容相同 D.该链结点指针域内容与list的内容相同
(14)若listl和list2分别为一个单链表与一个双向链表的第一个结点的指针,则——。
A.1ist2比listl占用更多的存储单元 B.1istl与list2占用相同的存储单元
C.1istl和list2应该是相同类型的指针变量D.双向链表比单链表占用更多的存储单元(15)在表达式中,符号p->link表示——。
A.p所指的链结点的指针域(位置) B.p所指的链结点的指针域的内容
C.p所指的链结点的下一个链结点的地址
D.p所指的链结点的下一个链结点的地址(出现在表达式中)
(16)在一个具有n个链结点的线性链表中查找某一个链结点,若查找成功,需要平均比较 ——个链结点。
A.n B.n/2 C.(n+1)/2 D.(n-1)/Q
(17)从一个具有n个链结点的有序线性链表(即链结点按照数据域值有序链接)中插入一个 新的链结点,并且仍然保持链表有序的时间复杂度为——。
A.O
(1) B.O(n) C.O(n
(2)) D.O(log2(n))
(18)给定具有n个元素的顺序表,建立一个有序线性链表的时间复杂度为——。
A.O
(1) B.O(n) C.O(n
(2)) D.O(log2(n))
(19)在非空线性链表中p所指的链结点后面插入一个q所指的链结点的过程是依次执 行——。
A.q->link=p;p->link=q; B.q->link=p->link;p->link=q; C.q->link=p->link;p=q; D.p->link=q;q->link=p;
(20)若删除非空线性链表中p所指的链结点的直接后继链结点的过程是依次执行 ________.
A.r=p->link;p->link=r;free(r);
B.r=p->link;p->link=r->link;free(r); C.r=p->link;p->link=r->link;free(p); D.p->link=p->link->link;free(p);
(21)在非空双向循环链表中q所指的链结点后面插入一个p所指的链结点的动作依次 为:
p->llink=Q;p->rlink=q->rlink;q->rlink=p;——。
(空白处为一条赋值
第10页共63页
济南铁道职业技术学院专升本辅导教材数据结构
语句)
A.q->llink=p B.q->rlink->llink=p
C.p->fiink->llink=p D.p->llink->llink=p
(22)在非空双向循环链表中q所指的那个链结点前面插入一个p所指的链结点的动作对 应的语句依次为:
p->rlink=Q;p->llink=q->llink;q->[1ink=p;——。
(空白 处为一条赋值语句)
A.q->rlink=p; B.q->llink->rlink=p;
C.p->rlink->rlink=p; D.p->llink->rlink=p;
(23)在包含有1000个数据元素的线性表中实现如下四个操作,所需要的执行时间最长的是 一O
A.线性表采用顺序存储结构,在第10个元素后面插入一个新的元素 B.线性表采用链式存储结构,在第10个元素后面插入一个新的元素 C.线性表采用顺序存储结构,删除第990个元素 D.线性表采用链式存储结构,删除p所指的链结点2.3填空题。
(1)顺序表是一种——线性表。
(2)在程序设计中,描述线性表的顺序存储结构一般都用——。
(3)在——情况下,删除线性表中一个数据元素平均要移动表中近一半的元素。
(4)在顺序表的——插入一个新的数据元素不必移动任何元素。
(5)若长度为n的线性表采用顺序存储结构,在其第i个位置(1≤i≤n+1)插入一个新的数据 元素,当不溢出时,首先——,然后——,最后——。
(6)若长度为n的线性表采用顺序存储结构,删除其第i个元素(1≤i≤n),首先——,然 后——。
(7)若长度为n的线性表采用顺序存储结构,插入或删除一个元素的时间复杂度为——。
(8)若某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素 的存储地址为——。
(9)线性表的链式存储结构主要包括——、——和——三种形式。
(10)线性表的顺序存储结构是通过——来直接反映数据元素之间的逻辑关系,而链式存 储结构则是通过——间接反映数据元素之间的逻辑关系。
(11)根据——的多少,可以将链表分为线性链表(单链表)与双向链表。
(12)若对线性表进行的操作主要不是插入和删除,则该线性表宜采用——存储结构,若 频繁地对线性表进行插入和删除操作,则该线性表宜采用——存储结构。
(13)删除list所指的线性链表的第一个链结点是执行操作——。
(14)删除非空线性链表中q所指的链结点(其直接前驱结点r指出)的动作是执行语句 ——和——。
(15)在线性链表中q所指的链结点后面插入一个地址为p的新结点的过程是依次执行操 作——和——。
(16)若p为指向循环链表中某链结点的指针变量,判断循环链表是否只有一个链结点的标志 是——。
(17)删除非空双向链表中q所指的链结点的过程是执行语句——和——。
(18)在具有n个链结点的链表的已知位置插入一个链结点的时间复杂度为——。
(19)在具有n个链结点的链表中查找一个链结点的时间复杂度为——。
(xx年试题
1.在线性表的下列存储结构中,读取元素花费时间最少的是
A.单链表B.双链表 C.循环链表D.顺序表2.顺序存储的线性表,在任一结点前插入一个新结点时所需移动结点的平均次数为
A.nB.n/2 C.n+1D.(n+1)/2
3.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为()+1 i
4.在顺序存储的线性表中的第i(1≤i≤n)个元素之前插入一个元素,则需向后移动_________个元素。
一、选择题
1.在线性表的下列存储结构中,读取元素花费时间最少的是
A.单链表B.双链表 C.循环链表D.顺序表
2.顺序存储的线性表,在任一结点前插入一个新结点时所需移动结点的平均次数为
A.nB.n/2 C.n+1D.(n+1)/2
3.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为() +1 i
4.在顺序存储的线性表中的第i(1≤i≤n)个元素之前插入一个元素,则需向后移动
第13页共63页
济南铁道职业技术学院专升本辅导教材数据结构
_________个元素。
5.在以单链表为存储结构的线性表中,数据元素之间的逻辑关系用
A.数据元素的相邻地址表示C.指向后继元素的指针表示
B.数据元素在表中的序号表示D.数据元素的值表示
6.设p指向单链表中的一个结点,s指向待插入的结点,则下述程序段的功能是 s->next=p->next; p->next=s;
t=p->data; p->data=s->data; s->data=t;
A.结点*p与结点*s的数据域互换B.在p所指结点的元素之前插入元素C.在p所指结点的元素之后插入元素D.在结点*p之前插入结点*s
7.在线性表的下列存储结构中,读取元素花费时间最少的是
A.单链表C.循环链表
B.双链表
D.顺序表
8.将一个头指针为p的单链表中的元素按与原单链表相反的次序存放,则下列算法段中的空白处应为:
q=NULL;
while(p!
=NULL) {
} p=q;
A.r=q;q=p;p=p->next;q->next=r; B.q=p;r=q;