首页 > 试题广场 >

某带链的队列初始状态为 front=rear=NULL 。经

[单选题]
某带链的队列初始状态为 front=rear=NULL 。经过一系列正常的入队与退队操作后, front=rear=10 。该队列中的元素个数为(
  • 1
  • 0
  • 1或0
  • 不确定

有上图值,在队列为链栈时,除了初始构造是皆为空外,当这两个指针再次相遇时,这个链队列的元素为一个。注意和循环队列区别。

发表于 2017-03-07 12:22:08 回复(3)
注意看是带链的队列,不要看成循环队列。
发表于 2017-08-03 10:24:42 回复(0)
往队列的队尾插入一个元素为入队,从队列的排头删除一个元素称为退队。初始时 front=rear=0 front 总是指向队头元素的前一位置,入队一次 rear+1 ,退队一次 front+1 。队列队头队尾指针相同时队列为空。而带链的队列,由于每个元素都包含一个指针域指向下一个元素,当带链队列为空时 front=rear=Null ,插入第 1 个元素时, rear+1 指向该元素, front+1 也指向该元素,插入第 2 个元素时 rear+1 front 不变,删除 1 个元素时 front+1 。即 front=rear 不为空时带链的队列中只有一个元素。故本题答案为 A 选项。
发表于 2017-02-13 10:05:56 回复(3)
带链的队列,
带链队列为空时,front = rear= NULL
插入第1个元素时,rear+1 =1,front+1 = 1
插入第2个元素时,rear+1 =2,front不变
删除第2个元素时,front+1 = 2,rear=2,即 front = rear= 2
而带链队列中还剩有1个元素
发表于 2017-07-23 17:38:50 回复(2)
链队列首指针指向首元素,尾指针指向尾元素。循环队列首指针指向首元素,尾指针指向尾元素的后一位。链队列为空时必须首尾指针都为空,如果首尾指针在一起说明还有一个元素。循环队列首尾指针在一起说明为空。
发表于 2018-08-17 16:10:46 回复(1)

这个题只需注意这是单向且不循环的链式队列,不是我们脑补的front = rear = head 链表为空的循环队列!

发表于 2017-09-14 08:10:35 回复(0)
初始时head==tail==NULL
当初始化第一个的时候,设进来的元素指针为q
那么q不仅是队头还是队尾
也就有head=q,tail=q
发现每次出队,head把他指向的元素出队,然后往后面挪一个
发表于 2020-02-09 17:35:53 回复(0)
带链的队列, 带链队列为空时,front = rear= NULL 插入第1个元素时,rear+1 =1,front+1 = 1 插入第2个元素时,rear+1 =2,front不变 删除第1个元素时,front+1 = 2,rear=2,即 front = rear= 2 而带链队列中还剩有1个元素
发表于 2018-04-07 11:47:26 回复(0)
(按照常规的构建队列的方法而言,更确切地说,添加第一个元素入队时的两种不同操作)
根据题意:某带链的队列初始状态为 front=rear=NULL 
也就是说该链式队列初态为空时,指针 front和rear都是空,而不是 front=rear=head。
那么按照这样的思路,为了防止队列一次性添加多个数据而造成front找不到队首元素,所以当添加第一个元素进队列时,有:
front=rear=AddFirstElem
那么这么分析下来可以知道,在随后每次添加元素时,进行的操作应该是:
tmp=(QueueType *)malloc(sizeof(QueueType));
tmp->next = NULL;
tmp->Data = Data;
rear->next = tmp;
rear = tmp;
好了,这么再继续分析,真正队空的状态是
front == NULL;
取队首元素的操作就成了

也就是说当front==rear!=NULL时,还存在最后一个元素。
(华丽的分割线)=============================
而对于front=rear=head的情况,因为front是有队头的,所以这样的情况下,添加元素的操作就变成了:
rear->Data = Data;
tmp=(QueueType *)malloc(sizeof(QueueType));
tmp->next = NULL;
rear->next = tmp;
rear = tmp;
这样一来,当front==rear时,就是空队。
发表于 2017-09-04 11:31:06 回复(3)
入队列,rear+1,front不变 出队列,front+1,rear不变 第一次入队列除外,rear+1,front+1 只有当队列为空时,或者只有一个元素时,rear才会等于front
发表于 2021-08-27 02:11:44 回复(0)
带链的队列,bai

带链队列为空时,dufront = rear= NULL

插入第1个元zhi素时,rear+1 =1,front+1 = 1

插入第2个元素时,rear+1 =2,front不变

删除dao第2个元素时,front+1 = 2,rear=2,即 front = rear= 2

而带链队列中还剩有1个元素 。
发表于 2020-07-18 19:14:18 回复(1)
从初始状态可知队列为不带头结点的链式队列,此时
 - 队列为空有rear = top = NULL
 - 队列中只有一个元素有rear = top != null
发表于 2020-05-23 17:35:02 回复(0)
带链的队列,由于每个元素都包含一个指针域指向下一个元素,当带链队列为空时   front=rear=Null   ,插入第   1   个元素时,   rear+1   指向该元素,   front+1   也指向该元素,插入第   2   个元素时   rear+1   front   不变,删除   1   个元素时   front+1   。即   front=rear   不为空时带链的队列中只有一个元素。
发表于 2017-05-17 11:17:40 回复(0)

初始状态为front = rear = null 时

  • 插入第一个元素t1,

    front + 1= rear + 1= t1;

  • 插入第二个元素t2,

    front不变,rear + 1 = t2;

  • ***入同t2;
  • 队列为空时,

    front = rear = null;

  • 还有最后一个元素时,

    front = rear = ti;


初始状态为front = rear = head时,

  • 插入第一个元素t1,

    front = head,rear + 1= t1;

  • 插入第二个元素t2,

    front = head,rear + 1 = t2;

  • ***入同t2;
  • 队列为空时,

    front = rear 即可;

  • 还有最后一个元素时,

    front = ti,front != rear;

编辑于 2019-03-28 10:12:41 回复(0)
这个题目感觉有问题啊,front 和 rear 再循环队列里面表示的不一样啊
发表于 2023-03-13 13:58:04 回复(0)
带链的队列就是链式存储的队列。 入队与退队操作改变了front,说明front指向的是对头,该链队列没有头结点。
发表于 2023-03-18 18:40:55 回复(0)
为什么用公式(rear-font+N)%N =0,就不对了,求解惑
发表于 2022-06-09 10:16:34 回复(1)
我还是觉得front是指向队头元素,rear指向队尾元素,要不然总感觉解释不通。
发表于 2022-05-09 12:02:05 回复(1)
高赞答案里的那个图很不错,本题考查不带头节点的链队结构
发表于 2021-12-12 15:35:52 回复(0)
因为题中已知front和rear都为Null,故为不带头结点情况,若只是告诉front=rear则需要考虑带头结点情况了
发表于 2021-11-22 14:35:27 回复(0)