#include <stdio.h>
#define MAX_STACK_SIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;
typedef struct sqstack
{
int stack_array[MAX_STACK_SIZE];
int top;
int bottom;
}SqStack;
//栈的初始化
SqStack Init_Srack(void)
{
SqStack S;
S.bottom = S.top=0;
return(S);
}
//压栈(元素进栈)
Status push(SqStack &S,ElemType e)
{
if(S.top==MAX_STACK_SIZE - 1)
return ERROR;
S.top ++;
S.stack_array[S.top] = e;
return OK; //压栈成功
}
//弹栈(元素出栈)
Status pop(SqStack S,ElemType &e)
{
if(S.top==0)
return ERROR;
e = S.stack_array[S.top];
S.top--;
return OK;
}
int main()
{
SqStack s1;
int i;
s1 = Init_Srack();
printf("请输入进栈的数:");
scanf("%d",&i);
push(s1,i);
printf("请输入出栈数:");
scanf("%d",&i);
pop(s1,i);
return 0;
}
本代码是参考清华大学版的数据结构进行编写的,当时由于初学,所以有一些bug,回首一看,已经过去了三四年,哈哈哈哈哈,再回来看这个代码,当时还真是“年少无知”哈~不过,除了bug以外,我不会重新的去更改这个代码,也许是一份珍贵的记忆。
代码很简单,用C语言实现了简单的出栈、进栈的操作,很基础,但是依据这份代码可能实现一些基于栈的数据结构的问题。例如,可以简单的加入for循环,这样的话,就能实现动态的栈存储过程,不多说了。大家如果有什么需求,可以在评论区提出来,能力时间允许的范围下,我会按照需求更新代码的~欢迎大家交流与探讨哈。