第一范文网 - 专业文章范例文档资料分享平台

数据结构试题库及答案 - 图文

来源:用户分享 时间:2025/6/6 7:46:52 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{i=0;

while(x>va[i])i++; for(j=n-1;j>=I;j--)

va[j+1]=va[j]; va[i]=x;} n++;

}

7、假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。 voidf2(SeqList*L){ inti,j,k; k=0; for(i=0;ilength;i++){ for(j=0;jdata[i]!=L->data[j];j++); if(j==k){ if(k!=i)L->data[k]=L->data[i]; k++; } } L->length=k; } 答案: (3,7,2,1,8)删除顺序表中重复的元素 8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。 答案: voidDelete_list(Lnode*head,ElemTypex,ElemTypey) {Lnode*p,*q; if(!head)returnERROR; p=head;q=p; while(!p)

{if(p->data>x)&&(p->data

if(p==head)

{head=p->next;free(p); p=head;q=p;} else

{q->next=p->next;free(p); p=q->next;}

else -来源网络,仅供个人学习参考

{q=p;p=p->next;}

}

}

9、在带头结点的循环链表L中,结点的数据元素为整型,且按值递增有序存放。给定两个整数a和b,且a

第三章栈和队列

一、选择题

1、一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是()。 A.a,b,c,d,eB.d,e,c,b,a C.d,c,e,a,b D.e,d,c,b,a 2、判断一个循环队列Q(最多n个元素)为满的条件是()。 A.Q->rear==Q->front B.Q->rear==Q->front+1 C.Q->front==(Q->rear+1)%n D.Q->front==(Q->rear-1)%n 3、设计一个判别表达式中括号是否配对的算法,采用()数据结构最佳。 A.顺序表 B.链表 C.队列 D.栈 4、带头结点的单链表head为空的判定条件是()。 A.head==NULL B.head->next==NULL C.head->next!=NULL D.head!=NULL 5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是()。 A.1243B.2134 C.1432D.4312 E.3214 6、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。 A.1和5 B.2和4 C.4和2 D.5和1 7、队列的插入操作是在()。 A.队尾 B.队头 C.队列任意位置 D.队头元素后

8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是()。

A.front==rear B.front==0 C.rear==0 D.front=rear+1

9、一个顺序栈S,其栈顶指针为top,则将元素e入栈的操作是()。 A.*S->top=e;S->top++; B.S->top++;*S->top=e; C.*S->top=e D.S->top=e; -来源网络,仅供个人学习参考

10、表达式a*(b+c)-d的后缀表达式是()。 A.abcd+- B.abc+*d- C.abc*+d- D.-+*abcd

11、将递归算法转换成对应的非递归算法时,通常需要使用()来保存中间结果。

A.队列 B.栈 C.链表 D.树 12、栈的插入和删除操作在()。 A.栈底 B.栈顶 C.任意位置 D.指定位置 13、五节车厢以编号1,2,3,4,5顺序进入铁路调度站(栈),可以得到()的编组。 A.3,4,5,1,2 B.2,4,1,3,5 C.3,5,4,2,1 D.1,3,5,2,4 14、判定一个顺序栈S(栈空间大小为n)为空的条件是()。 A.S->top==0 B.S->top!=0 C.S->top==n D.S->top!=n 15、在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为()。 A.front=front->next B.s->next=rear;rear=s C.rear->next=s;rear=s; D.s->next=front;front=s; 16、一个队列的入队序列是1,2,3,4,则队列的出队序列是()。 A.1,2,3,4 B.4,3,2,1 C.1,4,3,2 D.3,4,1,2 17、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是()。 A.a B.b C.c D.d 18、正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是()。 A.top不变 B.top=0 C.top=top+1 D.top=top-1 19、判断一个循环队列Q(空间大小为M)为空的条件是()。 A.Q->front==Q->rear B.Q->rear-Q->front-1==M C.Q->front+1=Q->rear D.Q->rear+1=Q->front

20、设计一个判别表达式中左右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构 B.队列 C.栈 D.线性表的链式存储结构

21、当用大小为N的数组存储顺序循环队列时,该队列的最大长度为()。 A.N B.N+1 C.N-1 D.N-2 22、队列的删除操作是在()。 -来源网络,仅供个人学习参考

A.队首 B.队尾 C.队前 D.队后

23、若让元素1,2,3依次进栈,则出栈次序不可能是()。 A.3,2,1 B.2,1,3 C.3,1,2 D.1,3,2

24、循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()。 A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D.rear-front

25、在解决计算机主机和打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取走数据打印。该缓冲区应该是一个()结构。 A.堆栈 B.队列 C.数组 D.线性表 26、栈和队列都是()。 A.链式存储的线性结构 B.链式存储的非线性结构 C.限制存取点的线性结构 D.限制存取点的非线性结构 27、在一个链队列中,假定front和rear分别为队头指针和队尾指针,删除一个结点的操作是()。 A.front=front->next B.rear=rear->next C.rear->next=front D.front->next=rear 28、队和栈的主要区别是()。 A.逻辑结构不同 B.存储结构不同 C.所包含的运算个数不同 D.限定插入和删除的位置不同 二、填空题 1、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈的容量至少应该是。 答案:3 2、一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为:。 答案:(rear-front+M)%M

3、在具有n个元素的循环队列中,队满时具有个元素。 答案:n-1

4、设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为。 答案:61

5、已知循环队列的存储空间大小为20,且当前队列的头指针和尾指针的值分别为8和3,且该队列的当前的长度为_______。 -来源网络,仅供个人学习参考

三、判断题

1、栈和队列都是受限的线性结构。?

2、在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种随机存取结构。?

3、以链表作为栈的存储结构,出栈操作必须判别栈空的情况。? 四、程序分析填空题

1、已知栈的基本操作函数: intInitStack(SqStack*S);//构造空栈 intStackEmpty(SqStack*S);//判断栈空 intPush(SqStack*S,ElemTypee);//入栈 intPop(SqStack*S,ElemType*e);//出栈 函数conversion实现十进制数转换为八进制数,请将函数补充完整。 voidconversion(){ InitStack(S); scanf(“%d”,&N); while(N){ (1); N=N/8; } while((2)){ Pop(S,&e); printf(“%d”,e); } }//conversion 答案:(1)Push(S,N%8) (2)!StackEmpty(S) 2、写出算法的功能。 intfunction(SqQueue*Q,ElemType*e){ if(Q->front==Q->rear) returnERROR; *e=Q->base[Q->front]; Q->front=(Q->front+1)%MAXSIZE; returnOK; }

3、阅读算法f2,并回答下列问题:

(1)设队列Q=(1,3,5,2,4,6)。写出执行算法f2后的队列Q; (2)简述算法f2的功能。 voidf2(Queue*Q){ DataTypee;

if(!QueueEmpty(Q)){ e=DeQueue(Q); -来源网络,仅供个人学习参考

搜索更多关于: 数据结构试题库及答案 - 图文 的文档
数据结构试题库及答案 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4wedd9yne23bj0w6iip07zlrl1bk8m012y5_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top