数据结构---第三章栈和队列---队列---选择题

1队列的基本操作有哪些?

InitQueue(&Q):初始化队列,构造一个空队列Q。
QueueEmpty(Q):判队列空,若队列Q为空则返回True,否则返回False。
EnQueue(&Q,x):入队,若队列未满,将x加入,使之成为新的队尾。
DeQueue(&Q,&x):出队,若队列Q非空,则将队头元素赋值给x。
GetHead(Q,&x):读队头元素,若队列Q非空,则将队头元素赋值给x。
栈和队列是操作受限的线性表,因此不是任何对线性表的操作都可以作为栈和队列的操作。比如,不可以随便读取栈或队列中间的某个数据。
取出最近入队的元素既不是入队也不是出队,因此不算是基本操作。

2已知循环队列的存储空间为数组A[21],front指向队头元素的前一个位置,rear指向队尾元素。假设当前front和rear的值分别为8和3,则该队列的长度为?

数据结构---第三章栈和队列---队列---选择题_第1张图片
这种情况和front指向当前元素,rear指向队尾元素的下一个元素的计算是相同的。

3入队出队操作和rearfront到底有什么关系

数据结构---第三章栈和队列---队列---选择题_第2张图片

4循环队列放到一维数组A[0……M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是?

数据结构---第三章栈和队列---队列---选择题_第3张图片

5为什么循环单链表不适合做链队?

因为循环单链表在完成进队和出队操作后还要修改为循环的,这对队列来讲是多余的。

6为什么要选择链头做队头呢?

这是因为要在队头做出队操作,这样便于删除队头元素。

7什么是双端队列?

输出受限的双端队列:允许在一端进行插入和删除,但在另一端只允许插入的双端队列称为输出受限的双端队列。
输出受限的双端队列:允许在一端进行插入和删除,但在另一端只允许删除的双端队列。

你可能感兴趣的:(数据结构,数据结构)