顺序栈的实现 c++

来源:互联网 发布:ptc系列软件 编辑:程序博客网 时间:2024/06/14 22:12
  用c++实现顺序栈:
//顺序栈的实现#include <iostream>#include <string>#define  MAXSIZE 100using namespace std;struct Data{public:int bookNum[MAXSIZE];    static int top ;};int Data::top = 0;//顺序栈的初始化Data* SeqStackInit(){Data *s = new Data;s->top = -1;return s;}//顺序栈的判空int SeqStackEmpty(Data* s){if (-1 == s->top){return true;}elsereturn false;}//顺序栈的入栈void SeqStackPush(Data* s, int x){    if ((MAXSIZE-1) == s->top)    {        cout <<"栈满!"<<endl;    }  s->top++;s->bookNum[s->top] = x;cout<<"入栈元素:"<<s->bookNum[s->top]<<endl;}//顺序栈的出栈int SeqStackPop(Data* s){int x;if (-1 == s->top){cout <<"栈空!"<<endl;exit(0);}x = s->bookNum[s->top];cout <<"出栈元素:"<<s->bookNum[s->top]<<endl;s->top--;return x;}//顺序栈中取出栈顶元素int SeqStackGetTop(Data* s){if (-1 != s->top)return s->bookNum[s->top];}//顺序栈的长度int SeqStackLength(Data* s){int top1 = s->top;int length = 0;while(-1 != top1){        length++;top1--;}return length;}int main(){    Data* s = SeqStackInit();cout <<"判空操作:"<<SeqStackEmpty(s)<<endl;    cout <<"入栈操作:"<<endl;    SeqStackPush(s,12);    SeqStackPush(s,23);    SeqStackPush(s,4);     SeqStackPush(s,78);     SeqStackPush(s,3);cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl;cout <<"栈的长度:"<<SeqStackLength(s)<<endl;    cout <<"出栈操作:"<<endl;SeqStackPop(s);cout <<"判空操作:"<<SeqStackEmpty(s)<<endl;   cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl;return 0;}