该程序包含了顺序栈的置空、判断是否为空、判断是否为满、入栈、出栈和取栈顶元素等几种 *** 作;
#include
#define size 100
typedef int datatype; //假定栈元素的类型为int
typedef struct
{
datatype data[size];
int top;
}seqstack;
void initstack(seqstack *s) //置空
{
s->top=-1; //所有 *** 作必须先置空
}
int stackempty(seqstack *s) //判断是否为空
{
return s->top==-1;
}
int stackfull(seqstack *s) //判断是否为满
{
return s->top==size-1;
}
int push(seqstack *s,datatype x) //入栈
{
if(stackfull(s)) //自定义函数可以引用自定义函数 ,不需要通过实参输入;
{
puts("栈满"); // 新大陆,直接输出字符串包括中文;
return 0;
}
s->data[++s->top]=x;return 1; //栈的数组和栈的top ,先++在入
}
int pop(seqstack *s,datatype *y) //出栈
{
if(stackempty(s))
{
puts("栈空");return 0;
}
*y=s->data[s->top--];return 1;
}
int getstack(seqstack *s,datatype *e) //取栈顶元素
{
if(stackempty(s))
{
puts("栈空");return 0; //因为在函数里面,所以输出之后会自动换行,不需要在添加自动换行符;
}
*e=s->data[s->top];return 1;
}
void main()
{
seqstack s; //此处s是给定了空间的,可以直接使用
int x,y,e;
initstack(&s);
printf("已经置空\n");
printf("是否为空:%d\n",stackempty(&s));
printf("是否为满:%d\n",stackfull(&s));
scanf("%d",&x);
printf("入栈是否成功:%d\n",push(&s,x));
printf("出栈是否成功:%d\n",pop(&s,&y));
printf("取栈顶元素是否成功:%d\n",getstack(&s,&e));
}
各位兄弟,如果这篇文章对你有那么一点点的帮助的话,就给我一点鼓励点个赞吧,兄弟我在这里谢谢大家啦!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)