第三章 栈——顺序栈
数据结构基础代码 (严蔚敏 人邮教育出版社)
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
//创建顺序栈的结构体
typedef struct
{
int data[MaxSize];
int top;
}SqStack;
//初始化栈
void InitStack(SqStack &st) //栈的初始化
{
st.top=-1;
}
int PUSH(SqStack &st,int x) //元素入栈
{
if(st.top==MaxSize-1)
return 0;
else
{
++(st.top);
st.data[st.top]=x;
}
return 1;
}
int POP(SqStack &st,int &x) //元素出栈
{
if(st.top==-1)
{
printf("栈空!\n");
return 0;
}
else if(x!=st.data[st.top])
{
printf("此元素不是栈顶元素,出栈失败!\n");
return 0;
}
else
{
x=st.data[st.top];
--(st.top);
}
return 1;
}
void PRINT(SqStack st)
{
while(st.top!=-1)
{
printf("%d ",st.data[st.top]);
--(st.top);
}
}
int main()
{
int i,n,x,e;
SqStack st;
InitStack(st);
printf("请输入您准备入栈的元素个数:\n");
scanf("%d",&n);
printf("请输入您准备入栈的元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&x);
PUSH(st,x);
}
printf("已经入栈的元素为:\n");
PRINT(st);
printf("\n");
while(st.top!=-1)
{
printf("请输入出栈元素:");
scanf("%d",&e);
POP(st,e);
PRINT(st);
if(st.top==-1)
{
printf("恭喜您!顺序栈元素已经全部出栈!\n");
break;
}
}
}
运行结果如下: