数据结构习题习题22.1选择题(1)线性表是具有n个__________的有限序列(n!=0)。A.表元素B.字符C.数据元素D.数据项(2)顺序表的存储结构是一种__________的存储结构。A.随机存取B.顺序存取C.索引存取D.HASH存取(3)在一个长度为n的顺序表中,向第i个元素(1=i=n+1)之前插入一个新元素时,需要向后移动____________个元素。A.n-iB.n-i+1C.n-i-1D.i(4)链表是一种采用____________存储结构存储的线性表。A.顺序B链式C.星式D.网状(5)下面关于线性表的叙述错误的是_____________。A.线性表采用顺序存储方式,必须占用一片连续的存储空间B.线性表采用链式存储方式,不必占用一片连续的存储空间C.线性表采用链式存储方式,便于插入和删除操作的实现D.线性表采用顺序存储方式,便于插入和删除操作的实现(6)设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用____________存储方式最节省运算时间。A.单项链表B.单向循环链表C.双向链表D.双向循环链表(7)设指针q指向单链表中的结点A,指针p指向单链表中的结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B之间插入结点X的操作序列为____________。A.s-next=p-next;p-next=-s;B.q-next=s;s-next=p;C.p-next=s-next;s-next=p;D.p-next=s;s-next=q;(8)设指针变量p指向单链表结点A,则删除结点A的后继结点B的操作为___________。A.p-next=p-next-nextB.P=P-nextC.p=p-next-nextD.P-next=p(9)在一个以h为头的单循环链表中,p指针指向链尾的条件是__________.A.P-next=hB.p-next=NULLC.p-next-next=hD.p-data=-1(10)对于只在首尾两端进行插入操作的线性表,宜采用的存储结构为___________。A.顺序表B.用头指针表示的单循环链表C.单链表D.用尾指针表示的单循环链表2.2填空题(1)线性表是n个元素的_____________________________。(2)线性表的存储结构有______________________________。(3)设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________________,在链式存储结构上实现顺序查找的平均时间复杂度为___________________。(4)设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中___________个数据元素;删除第i个位置上的数据元素需要移动表中___________个元素。(5)若频繁地对线性表进行插入与删除操作,该线性表应采用_________________存储结构。(6)链式存储结构中的结点包含________________域和_________________域。(7)在双链表中,每个结点有两个指针域,一个指向____________,另一个指向_______________。(8)对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为______________,在表尾插入时间的复杂度为_________________。(9)设指针变量p指向单链表中的结点A,指针s指向被插入结点B,则在结点A的后面插入结点B的操作序列为_________________________________________________。(10)设指针变量p指向单链表中的结点A,则删除结点A的后继结点(假设存在)的语句序列我为:S=p-next;p-next=___________________;free(s);习题2参考答案2.1选择题(1).C.(2).B.(3).B.(4).B.5.D.6.B.7.B.8.A.9.A.10.D.2.2.填空题(1).有限序列(2).顺序存储和链式存储(3).O(n)O(n)(4).n-i+1n-i(5).链式(6).数据指针(7).前驱后继(8).Ο(1)Ο(n)(9).s-next=p-next;p-next=s;(10).s-next习题三3.1选择题1)下列说法正确的是()A.堆栈是在两端操作、先进后出的线性表B.堆栈是在一端操作、先进先出的线性表C.队列是在一端操作、先进先出的线性表D.队列是在两端操作、先进先出的线性表2)栈和队列的共同点是()A.都是先进先出B.都是先进先出C.只允许在端点出插入和删除元素D.没有共同点3)以下数据结构中()是非线性结构。A.队列B.栈C.线性表D.二叉树4)若一个栈的入栈序列是1,2,3,•••,n。其输出序列为p1,p2,p3,•••pn,,,p1=n,则pi为()A.IB.N-iC.N-i+1D.不确定5)当利用大小为N的一位素组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。A.top++B.Top--C.Top=0D.Top6)4个元素s栈的顺序是A,B,C,D,经运算,pop(s)后栈顶元素是()A.AB.BC.CD.D7)一个栈的输入序列是a,b,c,d,e,则栈的不可能的输出序列是()A.adcbaB.decbaC.dceabD.abcde8)设输入序列是1,2,3,•••n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()A.n-iB.n-1-iC.n+1-iD.不能确定9)字符A、B、C、D依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串A.15B.14C.16D.2110)递归函数f(n)=f(n-1)+n(n1)的递归出口是()A.f(1)=0B.f(1)=1C.f(0)=1D.f(n)=n11)设指针变量top指向当前链式栈的栈顶,则删除栈顶的元素的操作序列为()A.top=top+1B.top=top-1C.top-next=topD.top=top-next12)中缀表达式A-(B+C/D)*E的后缀表达式是()A.ABC+D/*E-B.ABCD/+E*-C.AB-C+D/E*D.ABC-+D/E*13)用front和rear分别表示顺序循环队列的队首和队尾指针,判断队空的条件是()A.front+1==rearB.(rear+1)%maxsize==frontC.front==0D.front==rear14)判定一个循环队列QU(最多元素为m0)为满队列的条件是()A.QU-front==QU-rearB.QU-front!=QU-rearC.QU-front==(QU-rear+1)%m0D.QU-front!=(QU-rear+1)%m015)设栈s和队列Q的初始状态为空。元素E1,E2,E3,E4,E5和E6依次通过栈S,一个元素出栈后即进入队列Q。若6个元素出列的顺序为E2,E4,E3,E6,E5和E1。则栈S的容量至少应该是()A.6B.4C.3D.216)用链接式存储的队列。在进行插入运算时,()A.仅修改头指针B.头、尾指针都要修改C.仅修改尾指针D.头、尾指针可能都要修改17)若用一个大小为6的数组实现循环队列,且当前rear和front的值分别为0和3.当从队列中删除一个元素再加入两个元素后。Rear和front的值分别为()A.1和5B.2和4C.4和2D.5和118)设顺序循环队列Q[0;M-1]的头指针分别为F和R,头指针F总是指向头元素的前一位置。尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()A.R-FB.F-RC.(R-F+M)%MD.(F-R+M)%M19)设指针变量front便是链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点x,则入队列的操作序列为()A.front-next=s;front=sB.s-next=rear;rear=sC.rear=next=s;rear=sD.s-next=front;rear=s20)当利用大小为N的数组顺序存储的一个队列是,该队列的最大长度为()A.n-2B.n-1C.nD.n+13.2填空题1)栈的插入和删除只能在栈顶栈顶进行,后进栈的元素必定先出栈,所以又把栈称为_______表;队列的插入和删除操作分别在队列的两端进行。先进队列的元素必定先出队列,所以又把队列称为_____表。2)后缀算式923+-102/-的值为_____中缀算式(3+4X)-2Y/3对应的后缀算式为____________________3)下面程序段的功能实现数据X进栈,要求在下划线处填上真确的语句。Typedefstruct{ints[100];inttop;}sqstackVoidpush(sqstack&stack,intx){If(stack.top==m-1)printf(“overflow”);Else{__________,___________;}}4)设指针变量P指向双向循环链表中的结点X。则删除结点X需要执行的语句序列为_________________,_____________________,(设结点中的两个指针域分别为llink和rlink).5)设有一个顺序循环队列中有M个存储单元。则该循环队列中最多能够存储M-1个队列元素;当前实际存储________个队列元素(设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置)6)设有一个顺序共享栈S[0;n-1],其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是______________7)设F和R分别表示顺序循环队列指针和尾指针,则判断该循环队列为空的条件为_______________8)顺序循环队列判空的条件是(使用front,rear,n表示)_________9)顺序循环队列判满的条件是(使用front,rear,n表示)_________10)顺序循环队列MAXSIZE=N,最多可以存储____________元素习题3参考答案3.1.选择题(1).D(2).C(3).D(4).C(5).B(6).C(7).C(8).C(9).B(10).AB(11).D(12).B(13).D(14).C(15).C(16).D(17).B(18).C(19).C(20).C3.2.填空题(1)FILO,FIFO(2)-1,34X*+2Y*3/-(3)stack.top++,stack.s[stack.top]=x(4)pllink-rlink=p-rlink,p-rlink-llink=p-rlink(5)(R-F+M)%M(6)top1+1=top2(7)F==R(8)front==rear(9)front==(rear+1)%n(10)N-1习题44.1选择题(1)如下陈述中正确的是______。A.串是一种特殊的线性表B.串的长度必须大于零C.串中的元素只能是字母D.空串就是空白串(2)下列关于串的叙述中,正确的是______。A.串长度是指串中不同字符的个数B.串是n个字母有序数列C.如果两个串含有相同的字符,则它们相等D.只有当两个串的长度相等,并且各个对应位置的字符都相符是串才相等(3)字符串的长度是指______。A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数D.串中不同数字的个数(4)两个字符串长度相等的充要条件是______。A.两个字符串长度相等B.两个字符串中对应位置上的字符相等C.同时具备(A)和(B)D.以上答案都不对(5)串是一种特殊的线性表,其特殊性体现在______。A.可