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

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

  • 相关阅读:
    Btrace入门到熟练小工完全指南
    mysqldump常用于MySQL数据库逻辑备份
    thrift总结
    十大技巧优化Android App性能
    Google 发布 Android 性能优化典范
    Android性能优化之一:ViewStub
    Android实战技巧:ViewStub的应用
    安装andriod studio时出现Internal error. Please report to https://code.google.com/p/an
    Android Service的生命周期
    Android 70道面试题汇总不再愁面试
  • 原文地址:https://www.cnblogs.com/webcyh/p/11401119.html
Copyright © 2011-2022 走看看