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

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

  • 相关阅读:
    deepin/uos和局域网其他机器无法ping通
    Ubuntu18.04完全卸载vscode
    批量拉取github组织或者用户的仓库
    vmware uos挂载windows共享目录
    清空容器另类方式
    time_t 时间格式化字符串
    条件变量condition_variable
    C++多维堆数组定义
    arm64 ubuntu18.04 bionic安装bcc tools
    win10下载编译chromium
  • 原文地址:https://www.cnblogs.com/webcyh/p/11401119.html
Copyright © 2011-2022 走看看