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;
    }

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

  • 相关阅读:
    [原创] 毕设---在myeclipes中安装Hadoop开发插件
    [转]Linux下RPM软件包的安装及卸载 yum操作
    [转]结构化、半结构化和非结构化数据
    [转]这5种必知的大数据处理框架技术
    [转]浅谈Hive vs. HBase 区别在哪里
    前端资源整理
    每个程序员都应该知道的10大基础算法
    Python Day14(HTML)
    Python Day13(yaml)
    Python Day12(补充)
  • 原文地址:https://www.cnblogs.com/webcyh/p/11401119.html
Copyright © 2011-2022 走看看