zoukankan      html  css  js  c++  java
  • c++用类写栈和队列的简单基本操作(实验)

    继续更文。这次用类来写栈和队列,都是用数组模拟的;

    以下是栈和队列的定义:

    然后分别是栈和队列的类:

    完整代码贴上:

    //使用类来定义栈
    class ZHAN
    {
    public:
        STACK s;
        //栈的基本操作
        void csh(STACK & s);                       //初始化
        bool isempty(STACK & s);                //判断是否为空
        bool isfull(STACK & s);                    //判断是否为满
        bool push(STACK & s,int val);         //入栈
        bool pop(STACK & s,int & val);        //出栈
        int ding(STACK & s);                        //取栈顶元素
        int len(STACK & s);                          //取栈的长度(有效元素个数)
        void SHOW(STACK & s);                 //遍历栈
    };
    void ZHAN::csh(STACK & s)
    {
        s.top=-1;
    }
    bool ZHAN::isempty(STACK & s)
    {
        if(-1==s.top)
            return true;
        else
            return false;
    }
    bool ZHAN::isfull(STACK & s)
    {
        if(s.top==MAX-1) //下标从零开始
            return true;
        else
            return false;
    }
    bool ZHAN::push(STACK & s,int val)
    {
        if(isfull(s))
            return false;
        else
        {
            s.data[++s.top]=val;  //top指针从-1开始 所以先++才能用
            return true;
        }
    }
    bool ZHAN::pop(STACK & s,int & val)
    {
        if(isempty(s))
            return true;
        else
        {
            val=s.data[s.top--];
            return true;
        }
    }
    int ZHAN::ding(STACK & s)
    {
        if(isempty(s))
        {
            cout<<"此栈为空栈!!"<<endl;
        }
        else
        {
            return s.data[s.top];
        }
    }
    int ZHAN::len(STACK & s)
    {
        return s.top+1;
    }
    void ZHAN::SHOW(STACK & s)
    {
        int i;
        while(!isempty(s))  //当栈不为空 不断的出栈取值
        {
            pop(s,i);
            cout<<i<<endl;
        }
    }

     队列

    //使用类来定义队列
    class DUILIE
    {
    public:
        QUEUE q;
        //队列的基本操作
        void csh(QUEUE & q);                //初始化
        bool isempty(QUEUE & q);          //判断是否为空
        bool isfull(QUEUE & q);              //判断是否为满
        int head(QUEUE & q);                 //取队头元素
        bool pop(QUEUE & q,int & val);  //将队头元素出队
        bool push(QUEUE & q,int val);   //将队尾元素入队
        void SHOW(QUEUE & q);            //遍历队列
    };
    void DUILIE::csh(QUEUE & q)
    {
        q.f=-1;
        q.r=-1;
    }
    bool DUILIE::isempty(QUEUE & q)
    {
        return q.f==q.r?true:false;
    }
    bool DUILIE::isfull(QUEUE & q)
    {
        if(q.r==MAX-1)
            return true;
        else
            return false;
    }
    int DUILIE::head(QUEUE & q)
    {
        if(isempty(q))
        {
            cout<<"此队列为空!!"<<endl;
        }
        else
        {
            return q.data[q.f+1];
        }
    }
    bool DUILIE::pop(QUEUE & q,int & val)
    {
        if(isempty(q))
            return false;
        else
        {
            val=q.data[++q.f];
            return true;
        }
    }
    bool DUILIE::push(QUEUE & q,int val)
    {
        if(isfull(q))
            return false;
        else
        {
            q.data[++q.r]=val;
            return true;
        }
    }
    void DUILIE::SHOW(QUEUE & q)
    {
        if(isempty(q))
            cout<<"此队列为空!!"<<endl;
        else
        {
            for(int i=q.f+1; i<=q.r; i++)
                cout<<q.data[i]<<" ";
            cout<<endl;
        }
    }
    

      

    实验效果如如下:

    老规矩,有错改之,无则加勉。

    一起学习,一起进步。

    去吃饭了哈哈。

    因为我的代码是贴上去的 而不是写的 居然说不足150字不让发布

    以下是凑字数的,忽略忽略;

    山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,金经。丝竹乱耳,案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?

  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/yellowgg/p/7838023.html
Copyright © 2011-2022 走看看