写一个尾指针rear指向尾后元素的入栈代码,要求循环栈
时间: 2024-10-17 08:05:12 浏览: 8
在创建一个循环栈(环形缓冲区或循环链表)并使用尾指针(rear)进行入栈操作时,我们可以按照以下步骤编写代码:
```cpp
// 假设我们有一个Node结构体,包含数据value和下一个节点next
struct Node {
int value;
Node* next;
};
class CircularStack {
private:
Node* front; // 指向头部元素
Node* rear; // 尾部元素的指针,形成循环
public:
CircularStack() : front(nullptr), rear(nullptr) {}
// 入栈函数
void push(int value) {
// 如果栈为空
if (front == nullptr) {
front = rear = new Node();
front->value = value;
front->next = front; // 链接首尾
} else {
// 创建新节点,并将它连接到当前尾部之后
Node* newNode = new Node();
newNode->value = value;
newNode->next = rear->next;
// 更新尾部和新的尾部节点
rear->next = newNode;
rear = newNode; // 新节点成为新的尾部
}
}
// ...其他方法(如出栈、查看顶部元素等)
~CircularStack() {
// 清理内存
if (front != nullptr) {
Node* temp = front;
while (temp != rear) {
Node* nextTemp = temp->next;
delete temp;
temp = nextTemp;
}
delete rear;
front = rear = nullptr;
}
}
};
```
阅读全文