用一个带头的循环单链表表示一个队列,请写出相应的入队和出队函数。提示:带头循环单链表都是用尾元结点指针标识,很容易获得首元节点,正好对应上rear和front,什么时候队空?这样就可以用一个指针也可以表示链对列
时间: 2024-05-07 07:16:52 浏览: 34
假设以带头结点的循环链表表示一个队列,并且只设一个队尾指针指向尾元素结点(注意不设头指针),试写出相应的置空队、入队、出队的算法 (Java)
入队操作:
```
void enQueue(Node *&rear, int data) {
Node *newNode = new Node; // 创建新结点
newNode->data = data;
newNode->next = rear->next; // 插入尾部,指向head
rear->next = newNode; // 尾部指向新结点
rear = newNode; // 更新尾部指针
}
```
出队操作:
```
bool deQueue(Node *&rear, Node *&front, int &data) {
if (rear == front) { // 队列为空
return false;
}
Node *temp = front->next; // 记录下首结点
data = temp->data; // 获取数据
front->next = front->next->next; // 首部指向下一个结点
if (temp == rear) { // 如果出队后队列为空
rear = front;
}
delete temp; // 删除结点
return true;
}
```
阅读全文