使用顺序存储结构,定义一个空栈类,并定义判断栈空、判断栈满、入栈、出栈、取栈顶元素等基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。
时间: 2023-12-30 17:02:56 浏览: 76
以下是使用顺序存储结构定义的空栈类及基本操作实现的代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 栈的最大长度
class Stack {
private:
int data[MAXSIZE]; // 存放栈元素
int top; // 栈顶指针
public:
Stack(); // 构造函数
bool isEmpty(); // 判断栈空
bool isFull(); // 判断栈满
bool push(int x); // 入栈
bool pop(); // 出栈
int getTop(); // 取栈顶元素
};
Stack::Stack() {
top = -1; // 初始化栈顶指针
}
bool Stack::isEmpty() {
return (top == -1);
}
bool Stack::isFull() {
return (top == MAXSIZE - 1);
}
bool Stack::push(int x) {
if (isFull()) {
return false;
}
top++;
data[top] = x;
return true;
}
bool Stack::pop() {
if (isEmpty()) {
return false;
}
top--;
return true;
}
int Stack::getTop() {
return data[top];
}
int main() {
int n = 5; // 验证数据个数
int arr[] = {1, 2, 3, 4, 5}; // 验证数据
Stack S; // 声明一个栈对象
cout << "栈是否为空:" << S.isEmpty() << endl;
for (int i = 0; i < n; i++) {
if (!S.push(arr[i])) {
cout << "栈已满,入栈失败!" << endl;
}
}
cout << "栈是否为空:" << S.isEmpty() << endl;
cout << "栈是否已满:" << S.isFull() << endl;
cout << "栈顶元素为:" << S.getTop() << endl;
while (!S.isEmpty()) {
cout << S.getTop() << " ";
S.pop();
}
cout << endl;
return 0;
}
```
运行结果:
```
栈是否为空:1
栈是否为空:0
栈是否已满:1
栈顶元素为:5
5 4 3 2 1
```
阅读全文