#define MAX_STACK 100
typedef struct
{
char *data;
int st;
}STACK;
STACK *createstack()
{
STACK *s;
s = (STACK *)malloc(sizeof(STACK)); //分配一个保存堆栈结构的内存地址
if(!s) return 0;
s->data = (char *)malloc(MAX_STACK*sizeof(int));
if(!s->data)
{
free(s);
return 0;
}
s->st = 0;
return s;
}
将数据e压入堆栈,然后,将栈顶指针自增1
int push(STACK *s,int e)
{
if(!s) return 0;
if(!s->data) return 0;
if(s->st>MAX_STACK) return 0;
s->data[s->st++] = e;
return 1;
}
从堆栈中弹出数据,将栈顶指针先自减1,再返回栈顶的数据
int pop(STACK *s)
{
if(!s) return 0;
if(!s->data) return 0;
if(s->st<0) return 0;
return s->data[--s->st];
}
int main()
{
int i,n;
STACK *s = createstack();
for(i=0;i<10;i++)
{
printf("Input data to heap:");
scanf("%d",&n);
push(s,n);
}
printf("output from heap:");
for(i=0;i<10;i++)
printf("%d",pop(s));
prinf("\n");
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。