栈的基本操作
初始化栈:
#define MAXSIZE 5
typedef struct
{
int *top;
int *base;
int stacksize;
}SqStack;
void CreateStack(SqStack &S)
{
S.base=new int[MAXSIZE];
if(S.base==NULL){
cout<<"分配内存失败!";
return ;
}
S.top=S.base;
S.stacksize=MAXSIZE;
}
入栈:
void Push(SqStack &S,int e){
if(S.top-S.base==maxsize) { cout << "栈满!"; return ; }
*S.top=e;
S.top++;
}
出栈:
void Pop(SqStack &S)
{
if(S.top==S.base){
cout<<"栈空"<
取栈顶元素:
int GetTop(SqStack &S)
{
if(S.top==S.base)
{
cout<<"栈空!"<
完整代码:
#include
#include
using namespace std;
#define maxsize 5
typedef struct
{
int* base;
int* top;
int stactsize;
}sqstack;
//顺序栈的初始化
void initstack(sqstack& s)
{
s.base = new int[maxsize];
if (!s.base) {
cout << "分配内存失败!" << endl;
system("pause");
return;
}
s.top = s.base;
s.stactsize = maxsize;
}
//入栈
void push(sqstack& s, int e)
{
if ((s.top - s.base)==maxsize) {
cout << "栈满!" << endl;
system("pause");
return;
}
*s.top = e;
s.top++;
system("pause");
}
//出栈
void pop(sqstack& s)
{
if (s.top == s.base) {
cout << "栈空!" << endl;
system("pause");
return;
}
s.top--;
system("pause");
}
int gettop(sqstack s)
{
if (s.top == s.base) {
cout << "栈空!" << endl;
system("pause");
}
return *(s.top - 1);
}
void menu(sqstack& s)
{
cout << "************************" << endl;
cout << "| 1.入栈 |" << endl;
cout << "| 2.出栈 |" << endl;
cout << "| 3.取栈顶元素 |" << endl;
cout << "| 4.退出 |" << endl;
cout << "************************" << endl;
cout << "input your choice(1~4):";
int i;
cin >> i;
int e;
int e1;
switch (i) {
case 1:
cout << "请输入你要入栈的元素:";
cin >> e;
push(s, e);
break;
case 2:
pop(s);
break;
case 3:
e1 = gettop(s);
if (e1 < 0) break;
cout << "栈顶元素为:" << e1;
system("pause");
break;
case 4:
exit(0);
break;
default:
cout << "非法输入!";
break;
}
}
//实现顺序结构栈的基本操作(初始化栈,入栈,出栈,获取栈顶元素)
int main()
{
sqstack s;
initstack(s);
while (1) {
menu(s);
system("cls");
}
}



