顺序栈使用

#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]!='\0'){
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;
}

 

 

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

posted on 2019-08-23 16:52  渐凸强、啊哈  阅读(353)  评论(0)    收藏  举报