#include #include #include #include typedef struct { /* data */ int length;//初始默认数组长度,随着数组扩充同步增加 int add;//空位不够的时候一次增加的个数 int top;//当前数组的位置 int *start;//起始位置的指针,老师上课写了我也不知道为什么 }zhan; int zadd(zhan *z,int x); void zinit(zhan *z); int zreduce(zhan *z,int *a); void zfree(zhan *z); int main (){ zhan z; int a; int num; zinit(&z); printf("要输入多少个数字呢"); scanf("%d",&num); for(int i=0;itop==z->length){ z->start=(int*)realloc(z->start,(z->length+z->add)*sizeof(int)); z->length=z->length+z->add; } z->start[z->top]=x; z->top++; return 1; } void zinit(zhan *z){ //创建栈 要传入啥呢?和定义zhan的东西好像一样。 z->add=2; z->top=0; z->length=10; //现在定义好了,要申请内存 z->start=(int*)malloc((z->length)*sizeof(int)); } int zreduce(zhan *z,int *a){ //实现拿出去数据。这里 因为要把数据带着,要么 return ,要么用指针 if(z->top==0){ printf("没东西了,要爆了"); return 1 ; } z->top--; *a=z->start[z->top]; return 0; } void zfree(zhan *z){ free(z->start); }