假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的队列初始化,入队列和出队列的算法
时间: 2024-04-21 12:18:01 浏览: 140
数据结构算法习题答案带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针).docx
5星 · 资源好评率100%
队列初始化算法如下:
```
void InitQueue(LinkQueue &Q) {
Q.rear = (QueuePtr)malloc(sizeof(QNode));
Q.rear->next = Q.rear;
}
```
入队列算法如下:
```
void EnQueue(LinkQueue &Q, QElemType e) {
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
p->data = e;
p->next = Q.rear->next;
Q.rear->next = p;
Q.rear = p;
}
```
出队列算法如下:
```
bool DeQueue(LinkQueue &Q, QElemType &e) {
if (Q.rear == Q.rear->next) {
return false;
}
QueuePtr p = Q.rear->next->next;
e = p->data;
Q.rear->next->next = p->next;
if (Q.rear == p) {
Q.rear = Q.rear->next;
}
free(p);
return true;
}
```
阅读全文