2、自定义一个栈类Stack,能够实现入栈操作push,出栈操作pop,栈是否为空isEmpty,栈是否满isFull入栈时如果栈满了就输出Stack is full并返回false。出栈时如果栈空就输出Stack is empty并返回false。创建栈对象时要给出
正整数n表示栈的容量。主程序中输入正整数n,然后创建容量为n的栈s,然后对栈进行入栈操作,依次入栈11 22 3.3,出栈并输出出栈的值,然后再入栈4.4,输出s[1]的值(即栈中下标为1的值)。然后再出栈4次,每次如果出栈成功就输出出栈的值
输入10输出
3.3
2.2
4.4
2.2
1.1
Stack is empty
代码C++,完整的程序
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
CSDN专家-link 2021-11-19 11:32关注#include <iostream> using namespace std; class Stack{ private: int* data_;//存放栈中的数据 int max_size_;//栈最大空间 int top_;//栈顶 //初始化栈 void initStack() { data_ = new int(max_size_);//分配栈空间 top_ = -1;//初始化栈顶 } public: //默认空间为10 Stack() { max_size_ = 10; initStack(); } //设置最大空间 Stack(int max_size) { max_size_ = max_size; initStack(); } ~Stack() { delete data_; } //是否栈空 int isEmpty() { return (top_ == -1)?1:0; } //是否栈满 int isFull() { return (top_ >= max_size_)?1:0; } //进栈 int push(int x) { if(isFull()) return 0; else data_[++top_] = x; return 1; } //出栈 int pop(int &x) { if(isEmpty()) return 0; else x = data_[top_--]; return 1; } //清除栈 void clear(){ top_ = -1; } }; int main(int argc, char const *argv[]) { int n; cin>>n; Stack stack(n); stack.push(1.1); stack.push(2.2); stack.push(3.3); int a; stack.pop(a); cout<<a<<endl; stack.push(4.4); stack.pop(a); stack.pop(a); cout<<a<<endl; int r = stack.pop(a); int count = 0; while(r != 0) { count++; cout<<a<<endl; r = stack.pop(a); } if(count<4) cout<<"Stack is empty"<<endl; return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报