C语言 链队列 队尾插入元素 的问题

Status EnQueue(LinkQueue &Q,QElemType e)
{//插入元素e为Q的新的队尾元素
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)exit(OVERFLOW)//存储分配失败
p->data=e;
p->next=NULL;
Q.rear->next=p;【Q.rear为队尾指针】
Q.rear=p;【【“Q.rear->next=p;”Q.rear不是已经指向新插入的元素了么,这一句“Q.rear=p;”应该怎么理解?】】
return OK;
}

先谢谢~

第1个回答  2009-12-13
最后一句的意思是将队尾的指针赋值为rear,也就是让rear始终指向队列末尾本回答被提问者采纳

数据结构顺序循环队列中取模(求余)问题,C语言
因为是循环队列 所以 完全有可能出现 队头在队尾后面的情况,即R<F 比如 一共10个元素 M=10 先入队9个元素,队头指向最后一个 即9 然后 出队5个元素,队尾指向5 再入队三个元素, 队头指向2 这是队内实际个数为(2-5+10)%10 = 7个 至于为什么要加上 是因为 当F=9 R=5的时候 (9...

C语言循环队列问题求教
首先,队列上半部分,有元素,m-30+1;其次,队列下半部分,有元素,10-1;所以,总共的元素个数为total = m-30+1+10-1 = m-20

数据结构(c语言版)题目求答案
void InitCiQueue(CiQueue&Q)\/\/初始化循环链表表示的队列Q { Q=(CiLNode*)malloc(sizeof(CiLNode));Q->next=Q;}\/\/InitCiQueue voidEnCiQueue(CiQueue&Q,int x)\/\/把元素x插入循环列表表示的队列Q,Q指向队尾元素,Q->next指向头结点,Q->next->next指向队尾元素 { p=(CiLNode*)malloc...

在线急等C语言!写出在链式存储条件下,将单链表L1的元素连接在单链表L2...
Link(L1,L2){ \/\/\/找L1的尾部,如果你直接有尾部指针就不用了 Node *temp1=L1.head;while(temp1->next!=NULL){ temp1=temp1->next;} \/\/\/开始添加 temp2=L2.head->next;while(temp2!=NULL){ \/\/\/查找L2并移动,每查找一个就创建一个新空间 Node *new_node=new node;new_node=temp2;\/...

C语言 链队列这里的Q->rear->next是什么意思?为什么要嵌套定义结构体...
Q->rear->next 找的是Q节点的前一个节点的后一个节点,在双向链表中,插入新节点时,Q节点的前一个节点的后一个节点指向的应该是新节点,而不是Q.要嵌入结构体,因为结构体可以包含多个指针,包括前指针,后指针和数据。

C语言中,下面一题B项为什么要r=s?
r表示队列的尾 r->next=s; 这句就是把s挂在r的下一个点,插入到队列中,就是挂在队尾 r=s;这句是更新队尾。因为新插入的s变成了新的队尾,而r要时刻指向队尾。

用C语言编写队列的各种基本操作,我不是非常明白:注释里有些问题:请大家...
进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入在元素将是最先被删除;反之最后插入的元素将最后被删除,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。 队列空的条件:front=rear 队列满的...

计算机二级C语言,,33题,B和C,为什么,
先说32题,队列是可以循环的,队列遵循先进先出的原则。允许插入的一端称为队尾,用rear指向队尾元素,rear总是指向最后被插入的元素;允许删除的一端称为排头(队头),用front指向排头元素的前一个位置。图中队头元素为A,指针指向了1。当A元素退队后,B成为了队头元素,队头指针会指向2。此外...

C语言的队列如何实现和表示
一,用链表的方法 struct A { int n;struct A *a;} *p,*head,*rear;head=rear=NULL;\/*头指针,尾指针*\/ 添加元素:p=(struct A*)malloc(sizeof(struct A));...给新元素赋值...;rear->a=p;rear=p;当然添加第一个元素的时候要给head赋值。删除元素:p=head;head=head->a;free(p)...

C语言,顺序表插入元素操作。判断i是否在范围内时,i>L->length+1,为什么...
首先,这里的i应该是位置,而不是下标。当i的值是[1,L->length+1]时,都是有效的插入位置。1表示用待插入元素取代第1个元素,L->length+1表示插入到最后一个元素的后面,实际上就是追加一个元素。只有当i<1 || i>L->length+1时插入位置才无效。如果改成i<1 || i>L->length,则会不...

相似回答