队列相关习题

1.已知循环队列存储在一维数组A0…n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是( )。
A.0,0
B. 0,n-1
C. n-1, 0
D. n-1,n-1
2.循环队列存储在数组A[0…n]中,入队时的操作为( )。
A. rear=rear+1
B. rear= (rear+1) mod (n-1)
C. rear= (rear+1) mod n
D. rear= (rear+1) mod (n+1)
3.最适合用做链队的链表是( )。
A.带队首指针和队尾指针的循环单链表
B.带队首指针和队尾指针的非循环单链表
C.只带队首指针的非循环单链表
D.只带队首指针的循环单链表

4.最不适合用做链式队列的链表是( )。
A.只带队首指针的非循环双链表
B.只带队首指针的循环双链表
C.只带队尾指针的循环双链表
D.只带队尾指针的循环单链表
5.用链式存储方式的队列进行删除操作时需要( )。
A.仅修改头指针
B.仅修改尾指针
C.头尾指针都要修改
D.头尾指针可能都要修改
6.在一个链队列中,假设队头指针为front,队尾指针为rear, x所指向的元素需要入队,则需要执行的操作为( )。
A. front=x,front= front->next
B. x->next=front->next, front=x
C. rear->next=x, rear=x
D. rear->next=x, x->next=null, rear=x .
7.Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法。

int Reverse(Queue Q,Stack S){
	while(!QueueEmpty(Q)){
		x=DeQueue(Q);
		Push(S,x);
	}
	while(!StackEmpty(S){
		Pop(S,x);
		EnQueue(Q,x);
	}
}

8.请设计一个队列,要求满足:①初始时队列为空;②入队时,允许增加
队列占用空间;③出队后,出队元素所占用的空间可重复使用,即整个队列所占用的空间
只增不减;④入队操作和出队操作的时间复杂度始终保持为0(1)。请回答下列问题: .
1)该队列是应选择链式存储结构,还是应选择顺序存储结构?
2)画出队列的初始状态,并给出判断队空和队满的条件。
3)画出第一个元素入队后的队列状态。
4)给出入队操作和出队操作的基本过程。
答案:
1)链式存储结构
2)
在这里插入图片描述
3)
在这里插入图片描述
4)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值