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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记