- 顺序栈
#include <bits/stdc++.h>
#define Maxsize 100
using namespace std;
typedef int SElemType;
typedef struct {
SElemType *top;
SElemType *base;
int stacksize;
}SqStack;
bool InitStack(SqStack &s)
{
s.base = new SElemType[Maxsize];
if(!s.base) return false;
s.stacksize = Maxsize;
s.top = s.base;
return true;
}
bool EmptyStack(SqStack s)
{
if(s.top == s.base) return true;
else return false;
}
bool Push_Stack(SqStack &s, SElemType x)
{
if(s.top-s.base == s.stacksize) return false;
*s.top++=x;
return true;
}
bool Pop_Stack(SqStack &s,SElemType &e)
{
if(s.top == s.base) return false;
e = *--s.top;
return true;
}
bool Get_Top(SqStack s,SElemType &e)
{
if(s.top == s.base) return false;
else {
e = *--s.top;
}
return true;
}
int Stack_Length(SqStack s)
{
return s.top-s.base;
}
bool Clear_Stack(SqStack &s)
{
if(s.base) s.top = s.base;
if(s.top == s.base) return true;
else return false;
}
bool Destory_Stack(SqStack &s)
{
if(s.base){
delete s.base;
s.stacksize = 0;
s.base = s.top = NULL;
}
return true;
}
#include "stack.h"
int main(void)
{
SqStack s;
int m,x, e;
printf("欢迎来到栈的世界,亲爱的小公主。\n\
1. 初始化\n\
2. 判空\n\
3. 进栈\n\
4. 出栈\n\
5. 取出栈顶元素\n\
6. 当前栈的长度\n\
7. 清空顺序栈\n\
8. 销毁顺序栈\n\
9. 退出\n");
while(cin>>m)
{
if(m == 1){
if(InitStack(s)) cout << "初始化成功\n";
else cout << "失败\n";
}
if(m == 2){
if(EmptyStack(s)) cout << "栈为空\n";
else cout << "栈不空\n";
}
if(m == 3){
cin >> x;
if(Push_Stack(s,x)) cout << "执行成功\n";
else cout << "overflow\n";
}
if(m == 4)
{
if(Pop_Stack(s,e)) cout << "弹出元素为:" << e << endl;