您的位置:首页 > 编程语言 > C语言/C++

栈的基本操作(C语言版):入栈,出栈,输出栈

2013-03-04 16:39 295 查看
#include<stdio.h>
#define MAXN 10
int push(int *stack,int maxn,int *toppt,int x)
//调用时不加&是因为push(&s,Maxn,&top,i)中s是数组元素,其名字代表数组首地址
{
if(*toppt>=maxn)
return 1;//栈满
stack[*toppt]=x;//第一步操作,保证元素在0位置处
(*toppt)++;

return 0;
}
int pop(int *stack,int *toppt,int *cp)
{
if(*toppt==0)
return 1;
(*toppt)--;
*cp=stack[*toppt];//出栈元素的临时保存位置,结合main函数里出栈元素为i,按地址传值
return 0;
}
void OutputStack(int *stack,int toppt)
{
int i;
for(i=toppt-1;i>=0;i--)
{
printf("%d",stack[i]);
printf("\n");
}
}

void main()
{
int s[MAXN],i;
int top=0;
int op;
while(1)
{
printf("请选择操作,1:进栈  2:出栈  0:退出");
fflush(stdin);
scanf("%d",&op);
switch(op)
{
case 0:return ;
case 1:
{
printf("请输入进栈元素:");
scanf("%d",&i);
if(push(s,MAXN,&top,i)==0)
{
printf("进栈成功,栈内元素:\n");
OutputStack(s,top);
}
else
printf("栈满\n");
}
break;
case 2:
if(pop(s,&top,&i)==0)
{
printf("出栈元素为:[%d],栈内元素为:\n",i);
OutputStack(s,top);
}
else
printf("栈空\n");
break;
}
}
}




补充:入栈时修改指针,然后插入数据,出栈时刚好相反
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐