顺序栈

来源:互联网 发布:58同城小程序源码 编辑:程序博客网 时间:2024/06/10 02:21
#include <iostream>using namespace std;const int stacksize=100;typedef struct {int *base;int *top;int stacksize;}SqStack;void List ();void CreatStack (SqStack &s);void InsertStack (SqStack &s);void ClearStack (SqStack &s);void DestroyStack (SqStack &s);void EmptyStack (SqStack s);void LengthStack (SqStack s) ;void GettopStack (SqStack s);void pushStack (SqStack &s);void popStack (SqStack &s);void typeStack (SqStack s);int main(){int number;List();SqStack s;s.base=NULL;while(1){cout<<"请输入可执行的操作:"<<endl;cin>>number;switch(number){case 1:CreatStack (s);break;case 2:InsertStack (s);break;case 3:ClearStack (s);break;case 4:DestroyStack (s);break;case 5:EmptyStack (s);break;case 6:LengthStack (s);break;case 7:GettopStack (s);break;case 8:pushStack (s);break;case 9:popStack (s);break;case 10:typeStack (s);break;case 11:break;default:cout<<"请输入有效的操作!!!"<<endl<<endl;}if(number==11)break;}return 0;}void List (){   cout<<"******************************"<<endl;   cout<<"** 1.创建一个空栈           **"<<endl;   cout<<"** 2.输入栈元素             **"<<endl;   cout<<"** 3.清空栈                 **"<<endl;   cout<<"** 4.销毁栈                 **"<<endl;   cout<<"** 5.判断栈是否为空         **"<<endl;   cout<<"** 6.返回栈的长度           **"<<endl;   cout<<"** 7.求栈顶元素             **"<<endl;   cout<<"** 8.插入使其成为栈顶元素   **"<<endl;   cout<<"** 9.删除栈顶元素,返回其值 **"<<endl;   cout<<"** 10.输出栈的元素          **"<<endl;   cout<<"** 11.退出                  **"<<endl;   cout<<"**                          **"<<endl;   cout<<"******************************"<<endl;}void CreatStack (SqStack &s){s.base=new int [stacksize];if(!s.base)cout<<"申请失败,空间不足!!!\n";else{s.top=s.base; s.stacksize=stacksize;cout<<"创建成功一个空栈!!!\n";}}void InsertStack (SqStack &s){if(s.base){cout<<"请输入栈元素的个数:";int num;cin>>num;cout<<"请输入元素的值:";for(int i=0;i<num;i++){cin>>s.base[i];s.top++;}cout<<"初始化成功!!!\n";}elsecout<<"请先进行创建一个栈!!!\n";}void ClearStack (SqStack &s){if(s.base){s.top=s.base;cout<<"已清空栈!!!\n";}elsecout<<"请先进行创建一个栈!!!\n";}void DestroyStack (SqStack &s){if(s.base){delete s.base;s.base=NULL;}elsecout<<"请先进行创建一个栈!!!\n";}void EmptyStack (SqStack s){if(s.base){if(s.top==s.base)cout<<"此栈为空!!!\n";elsecout<<"此栈非空!!!\n";}elsecout<<"请先进行创建一个栈!!!\n";}void LengthStack (SqStack s) {if(s.base){SqStack q;q=s;int len=0;while(q.base<s.top){len++;q.base++;}cout<<"栈长为:"<<len<<endl;}elsecout<<"请先进行创建一个栈!!!\n";}void GettopStack (SqStack s){if(s.base){if(s.top==s.base) cout<<"此栈为空,不存在栈顶元素!!!\n";elsecout<<"栈顶元素为:"<<*(s.top-1)<<endl; }elsecout<<"请先进行创建一个栈!!!\n";}void typeStack (SqStack s){if(s.base){SqStack q;q=s;cout<<"栈的元素:";while(q.base<s.top){cout<<*(q.base)<<" "; q.base++;    }   cout<<endl;}elsecout<<"请先进行创建一个栈!!!\n";}void pushStack (SqStack &s){if(s.base){if(s.top-s.base>=s.stacksize)cout<<"此栈已满!!!\n";else{cout<<"请输入进栈的元素值:";cin>>*(s.top);s.top++;}}elsecout<<"请先进行创建一个栈!!!\n";}void popStack (SqStack &s){if(s.base){if(s.base==s.top)cout<<"此栈为空,操作失败!!!\n";else{int num;num=*--s.top;cout<<"出栈成功,出栈元素为:"<<num<<endl; }}elsecout<<"请先进行创建一个栈!!!\n";}

0 0
原创粉丝点击