作者在 2010-05-18 23:27:50 发布以下内容
#include<stdio.h>
#define M 10000
typedef struct data
{
int s[M];
int top;
}dat;
int push( dat *top,int x)
{
dat *p;
p=top;
if(p->top==M)
{
printf("stack full\n");
exit(0);
}
p->s[p->top]=x;//这个用寻址理解
p->top++; //出栈相同
return (1);
}
int pop(dat *top)
{
int x;
dat *p;
p=top;
if (p->top==0)
{
printf("stack empty\n");
exit(0);
}
p->top--;
x=p->s[p->top];
return x;
}
int main(void)
{
dat top;
int n,i,z=0;
top.top=0;
printf("Input the stack size n\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input x to push:\n");
scanf("%d",&z);
push(&top,z);
}
printf("Now pop the stack and print it\n");
for(i=0;i<n;i++)
{
printf("%4d",pop(&top));
}
printf("\n");
}