用带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针)。实现该队列的入队出队以及判断队列是否为空操作代码
时间: 2023-06-08 14:05:39 浏览: 88
数据结构算法-习题-答案-带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点注意不设头指针.docx
5星 · 资源好评率100%
很高兴能与您进行对话。以下是您所需要的代码实现:
```c++
#include <iostream>
using namespace std;
struct Node {
int val;
Node *next;
};
class Queue {
public:
Queue() {
rear = new Node;
rear->next = rear; // 指向自己,表示队列为空
}
void add(int val) {
Node *newNode = new Node;
newNode->val = val;
newNode->next = rear->next;
rear->next = newNode;
rear = newNode;
}
void remove() {
if (rear == rear->next) {
// 队列为空
cout << "Queue is empty!" << endl;
return;
}
Node *temp = rear->next->next;
delete rear->next;
rear->next = temp;
}
bool isEmpty() {
return rear == rear->next;
}
private:
Node *rear;
};
int main() {
Queue q;
q.remove(); // 应输出:Queue is empty!
q.add(1);
q.add(2);
q.add(3);
while (!q.isEmpty()) {
cout << "current front: " << q.front() << endl;
q.remove();
}
// 应输出:
// current front: 1
// current front: 2
// current front: 3
// Queue is empty!
return 0;
}
```
希望这个答案能够解决您的问题。
阅读全文