要求在vs2022可运行设计一个抽象数据类型栈的顺序表示和实现的演示程序,其基本操作有初始化栈、判栈空否、入栈、出栈等功能。
时间: 2024-02-05 20:04:48 浏览: 85
栈操作演示
好的,我明白了你的要求。以下是一个基于顺序表示的栈的演示程序,其中包括了初始化栈、判栈空否、入栈、出栈等基本操作。请参考以下代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 栈的最大容量
template<class T>
class SeqStack {
private:
T data[MAXSIZE]; // 存放栈中元素的数组
int top; // 栈顶指针
public:
SeqStack() { top = -1; } // 构造函数,初始化栈顶指针为-1
bool IsEmpty() { return top == -1; } // 判断栈是否为空
bool IsFull() { return top == MAXSIZE - 1; } // 判断栈是否已满
void Push(T x); // 入栈
T Pop(); // 出栈
};
template<class T>
void SeqStack<T>::Push(T x) {
if (IsFull()) // 栈满,则无法入栈
cout << "Error: Stack is Full!" << endl;
else {
top++; // 栈顶指针加1
data[top] = x; // 将元素x入栈
}
}
template<class T>
T SeqStack<T>::Pop() {
if (IsEmpty()) { // 栈空,则无法出栈
cout << "Error: Stack is Empty!" << endl;
return NULL;
}
else {
T x = data[top]; // 取出栈顶元素
top--; // 栈顶指针减1
return x;
}
}
int main() {
SeqStack<int> S; // 创建一个整型栈S
S.Push(1); // 入栈1
S.Push(2); // 入栈2
S.Push(3); // 入栈3
while (!S.IsEmpty()) {
cout << S.Pop() << " "; // 依次出栈并输出
}
cout << endl;
return 0;
}
```
这个程序使用了模板类,可以方便地实现不同类型的栈。你可以在vs2022中编译运行此程序,进行栈的基本操作演示。
阅读全文