#include<Stdio.h>
#include<malloc.h>
#define STACKSIZE 100
#define STACKINCREMENT 20
typedef struct SqStack{
int *top;
int *base;
int stacksize;
}SqStack;
int InitStack(SqStack *s){
s->base=(int *)malloc(STACKSIZE*sizeof(int));
if(s->base==NULL) return 0;
s->top=s->base;
s->stacksize=STACKSIZE;
return 1;
}
int StackEmpty(SqStack *s){
if(s->top=s->base) return 0;
else return 1;
}
int GetTop(SqStack *s,int *e){
if(s->top==s->base) return 0;
--s->top;
*e=*s->top;
return 1;
}
int Push(SqStack *s,int e){
if(s->top-s->base>=s->stacksize)
{
s->base=(int *)realloc(s->top,(s->stacksize+STACKINCREMENT)*sizeof(int));
if(s->base==NULL) return 0;
s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;}
*s->top++=e;
return 1;
}
int Pop(SqStack *s,int *e){
if(s->top==s->base) return 0;
*e=*--s->top;
return 1;
}
int StackLength(SqStack *s){
return s->top-s->base;
}
int main(){
int n,i;
int e; //我是这样做的
SqStack s; //SqStack *s;
InitStack(&s); //InitStacl( *s);
Push(&s,3);Push(&s,4);Push(&s,5);Push(&s,6); //Push ( *s,3);...
Pop(&s,&e); //为啥这样得不到结果?
putchar('\n'); //应用&,*有啥区别吗?
printf("出栈元素为%d\n",e);
Push(&s,8);
n=StackLength(&s);
printf("出栈元素为:");
for(i=0;i<n;i++)
{
Pop(&s,&e);
printf("%3d",e);
}
putchar('\n');
return 0;
}
0 个回答
太寂寞了,都没有人过来聊~