zoukankan      html  css  js  c++  java
  • 顺序栈的实现

    顺序栈使用

    #include<iostream>
    using namespace std;
    #define MaxSize 10
    typedef char ElemType;
    typedef struct {
            int top;
            ElemType data[MaxSize];
    } Stack;
    
    #include<iostream>
    using namespace std;
    #define MaxSize 10
    typedef char ElemType;
    typedef struct {
            int top;
            ElemType data[MaxSize];
    } Stack;
    
    //初始化
    void initStack(Stack &s){
            s.top=-1;//指向栈底
    }
    //销毁栈
    void destoryStack(Stack s){
    
    }
    
    //进栈
    int pushStack(Stack &s,ElemType data){
            //进栈前先判断是否栈满
            if(s.top==MaxSize-1){
                    return 0;
            }else{
                    s.top++;
                    s.data[s.top]=data;
                    return 1;
            }
    }
    
    //出栈
    int popStack(Stack &s,ElemType &data){
            //进栈前先判断是否栈空
            if(s.top==-1){
                    return 0;
            }else{
    
                    data = s.data[s.top];
                    s.top--;
                    return 1;
            }
    }
    //获取栈顶元素
    int getTop(Stack &s,ElemType &data){
            //进栈前先判断是否栈空
            if(s.top==-1){
                    return 0;
            }else{
                    data = s.data[s.top];
                    return 1;
            }
    }
    //判断栈空
    int isEmpty(Stack &s){
            if(s.top==-1){
                            return 1;
            }else{
                    return 0;
            }
    }
    int main(){
            /*
            栈的使用
            特点:先进后出
            应用:尚未知道
            基本算法:
            初始化 initStack
            销毁栈 destoryStack
            进栈 pushStack
            出栈 popStack
            获取栈顶元素 getTop
            判断栈空 isEmpty
    
            */
            Stack s;
            ElemType data[]={'1','a','b','4','6'},rst;
            initStack(s);//初始化
            int i=0;
            while(data[i]!=''){
    cout<<data[i];
                    pushStack(s,data[i]);
                    i++;
            }
            //获取栈顶元素
            getTop(s,rst);
            cout<<"栈顶元素"<<rst<<endl;
            popStack(s,rst);
            cout<<"出栈一个元素"<<rst<<endl;
            getTop(s,rst);
            cout<<"栈顶元素"<<rst<<endl;
            destoryStack(s);//这个是系统自动释放也就是程序结束才会释放因此在后面还是能得到栈顶元素
            cout<<"销毁栈后再获取"<<endl;
            if(!isEmpty(s)){
                    getTop(s,rst);
               cout<<"栈顶元素"<<rst<<endl;
            }else{
                    cout<<"空栈";
            }
            return 0;
    }

    链栈:思想与顺序栈一样都是先后出这里我就不做演示了,相信大家都会

  • 相关阅读:
    百度搜索时加上 (要屏蔽的内容),你会回来感谢我的。
    layui中不全的组件
    PHP使用gd库做的图像处理
    范用户体验相关BLOG
    视频聊天室软件的技术标准
    QTP11使用DOM XPath以及CSS识别元素对象
    跟我一起学Oracle 11g【11】Oracle 中的事务
    一点关于 mybatis 的记录
    git撤销本地commit,复原本地代码与服务器同步
    中国人民银行令〔2021〕第4号(征信业务管理办法)
  • 原文地址:https://www.cnblogs.com/webcyh/p/11401119.html
Copyright © 2011-2022 走看看