下面程序为队列的基本操作,请将程序代码补充完整。 typedef struct Qnode { QElemType data; struct Qnode *next; }Qnode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; Status InsertElem(LinkQueue &Q,LQElem e) { Qnode *p; p=(Qnode *)malloc(sizeof(Qnode)); p->next=(1) ; p->data=(2) ; (3) =p; (4) =p; } Status DeleteElem(LinkQueue &Q,LQElem &e) { Qnode *r; r=(5) ; e=r->data; Q.front->next=(6) ; free((7) ); }
时间: 2023-05-30 18:01:21 浏览: 131
队列的基本操作 源码
*Q, QElemType e)
{
QueuePtr p = (QueuePtr)malloc(sizeof(Qnode)); // 创建一个新节点
if (!p) // 内存分配失败
return ERROR;
p->data = e; // 将数据存入新节点
p->next = NULL; // 新节点的下一个节点指针为空
Q->rear->next = p; // 将新节点插入队尾
Q->rear = p; // 队尾指针指向新节点
return OK;
}
Status DeleteElem(LinkQueue *Q, QElemType *e)
{
if (Q->front == Q->rear) // 队列为空
return ERROR;
QueuePtr p = Q->front->next; // 指向队头节点
*e = p->data; // 将队头节点的数据存入e中
Q->front->next = p->next; // 将队头节点的下一个节点作为新的队头节点
if (Q->rear == p) // 如果队头节点是队尾节点
Q->rear = Q->front; // 将队尾指针指向头节点
free(p); // 释放被删除的节点
return OK;
}
阅读全文