m0_61729907 2021-11-19 11:07 采纳率: 100%
浏览 22
已结题

代码C++,完整的程序

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

  • 写回答

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;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记