栈是一种只能在一端进行插入和删除操作的数据结构,按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。定义栈类mystack,用一个动态整型数组存放栈的数据,数据成员包括指向动态数组的指针,栈的最大规模(缺省值为100)和栈顶指针,要求能够判别栈满和栈空,数据进栈函数push,出栈函数pop等。
时间: 2024-02-28 16:55:05 浏览: 197
队列的进队和出队-数据结构(清华大学版)——栈和队列
好的,您的问题是如何定义一个栈类mystack,实现栈的基本操作,对吧?那么下面是一个C++版本的代码实现:
```c++
#include <iostream>
using namespace std;
class mystack {
private:
int *data; // 指向动态整型数组的指针
int top; // 栈顶指针
int size; // 栈的最大规模
public:
mystack(int s = 100) { // 构造函数
size = s;
data = new int[size];
top = -1; // 初始栈顶指针为-1
}
~mystack() { // 析构函数
delete[] data;
}
bool isFull() { // 判断栈是否满
return (top == size - 1);
}
bool isEmpty() { // 判断栈是否空
return (top == -1);
}
void push(int x) { // 入栈
if (isFull()) {
cout << "Stack is full!" << endl;
return;
}
data[++top] = x;
}
int pop() { // 出栈
if (isEmpty()) {
cout << "Stack is empty!" << endl;
return -1;
}
return data[top--];
}
};
int main() {
mystack s(5); // 创建一个最大容量为5的栈
s.push(1);
s.push(2);
s.push(3);
cout << s.pop() << endl; // 输出3
cout << s.pop() << endl; // 输出2
cout << s.pop() << endl; // 输出1
cout << s.pop() << endl; // 输出Stack is empty!,并返回-1
return 0;
}
```
希望这个简单的示例可以解决您的问题,如果还有其他问题,欢迎再次提出哦!
阅读全文