数据结构顺序栈 c++
时间: 2023-11-30 14:40:53 浏览: 91
以下是一个简单的C++顺序栈的实现示例:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义栈的最大容量
template <typename T>
class SeqStack {
private:
T data[MAXSIZE]; // 栈的数据存储数组
int top; // 栈顶指针
public:
SeqStack() { top = -1; } // 构造函数,初始化栈顶指针为-1
bool Push(T x); // 入栈操作
bool Pop(T &x); // 出栈操作
bool GetTop(T &x); // 获取栈顶元素
bool IsEmpty(); // 判断栈是否为空
bool IsFull(); // 判断栈是否已满
};
template <typename T>
bool SeqStack<T>::Push(T x) {
if (IsFull()) return false; // 栈已满,无法入栈
data[++top] = x; // 栈顶指针加1,将元素x入栈
return true;
}
template <typename T>
bool SeqStack<T>::Pop(T &x) {
if (IsEmpty()) return false; // 栈为空,无法出栈
x = data[top--]; // 将栈顶元素赋值给x,栈顶指针减1
return true;
}
template <typename T>
bool SeqStack<T>::GetTop(T &x) {
if (IsEmpty()) return false; // 栈为空,无法获取栈顶元素
x = data[top]; // 将栈顶元素赋值给x
return true;
}
template <typename T>
bool SeqStack<T>::IsEmpty() {
return top == -1; // 栈顶指针为-1,说明栈为空
}
template <typename T>
bool SeqStack<T>::IsFull() {
return top == MAXSIZE - 1; // 栈顶指针为MAXSIZE-1,说明栈已满
}
int main() {
SeqStack<int> stack1;
for (int i = 0; i < 10; i++) stack1.Push(i);
int x;
while (!stack1.IsEmpty()) {
stack1.Pop(x);
cout << x << " ";
}
cout << endl;
return 0;
}
```
阅读全文