建立链栈,并在链栈上实现栈的初始化,判空,入栈和出栈操作。创建头文件LinkedStack.h,包含链栈的创建,判空,出入栈的操作。请用c++写出编程代码
时间: 2024-10-20 15:19:27 浏览: 29
Java定义栈结构,并实现入栈、出栈操作完整示例
在C++中,我们可以使用链表数据结构来实现一个链式栈(Linked Stack)。下面是一个简单的`LinkedStack.h`头文件设计以及对应的链栈操作的实现:
```cpp
// LinkedStack.h
#ifndef LINKEDSTACK_H
#define LINKEDSTACK_H
#include <iostream>
class Node {
public:
int data;
Node* next;
// 构造函数
Node(int value) : data(value), next(nullptr) {}
};
class LinkedStack {
private:
Node* top; // 栈顶指针
public:
// 初始化栈
LinkedStack() : top(nullptr) {}
// 判空
bool isEmpty() const {
return top == nullptr;
}
// 入栈 (push)
void push(int value) {
Node* newNode = new Node(value);
if (!isEmpty()) {
newNode->next = top;
}
top = newNode;
}
// 出栈 (pop)
int pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
int poppedValue = top->data;
Node* temp = top;
top = top->next;
delete temp;
return poppedValue;
}
// 打印栈顶元素
void peek() const {
if (isEmpty()) {
std::cout << "Stack is empty\n";
} else {
std::cout << "Top element: " << top->data << "\n";
}
}
};
#endif // LINKEDSTACK_H
```
这个`LinkedStack`类包含了基本的栈操作,包括初始化、判空、入栈(push)、出栈(pop),以及查看栈顶元素但不移除(peek)。请注意,由于链式栈的特性,出栈操作需要删除当前节点,所以在实际应用中需要注意内存管理。
阅读全文