假设以带头结点的循环链表表示队列,并且只设一个指针 指向队尾元素结点(注意不设头指针),试编写相应的队列 初始化、 入队列和出队列的算法。
时间: 2024-04-30 21:01:50 浏览: 170
队列的初始化:
```
void initQueue(Node *&rear) {
rear = new Node; // 创建头结点
rear->next = rear; // 头结点的指针域指向自身
}
```
队列的入队列:
```
void enQueue(Node *&rear, int data) {
Node *newNode = new Node; // 创建新结点
newNode->data = data; // 将数据存入新结点中
newNode->next = rear->next; // 将新结点插入到队尾后面
rear->next = newNode; // 修改队尾指针指向新结点
rear = newNode; // 修改队尾指针指向新结点
}
```
队列的出队列:
```
bool deQueue(Node *&rear, int &data) {
if (rear->next == rear) { // 队列为空
return false;
}
Node *p = rear->next->next; // 找到队头结点
data = p->data; // 取出队头结点的数据
rear->next->next = p->next; // 删除队头结点
if (p == rear) { // 队列中只有一个元素
rear = rear->next; // 将队尾指针指向头结点
}
delete p; // 释放结点空间
return true;
}
```
阅读全文