数据结构栈打印函数(打印函数为什初始为地址base+1,为base打印不正确)?-灵析社区

万码JFG3236P

``` c++ #include #include #include #define MAXSIZE 10 #define OWERFLOW -2 typedef struct stack { int *base; int *top; int stacksize; }sqstack; void Initstack(sqstack*s) { (*s).base=(int*)malloc(MAXSIZE); if(!(*s).base) exit(OWERFLOW); (*s).top=(*s).base; (*s).stacksize=MAXSIZE; printf("已完成初始化!\n"); } int Emptystack(sqstack s) { if(s.top==s.base) { printf("栈空!\n"); return true; } else return false; } int Lengthstack(sqstack s) { return s.top-s.base; } void Clearstack(sqstack s) { if(s.base) s.top=s.base; printf("栈已清空!\n"); } void Destroystack(sqstack *s) { if((*s).base) { free ((*s).base); (*s).stacksize=0; (*s).base=(*s).top; } printf("栈已销毁!\n"); } void push(sqstack*s,int e) { if((*s).top-(*s).base==(*s).stacksize) { printf("栈满!\n"); } else { (*s).top++; *(*s).top=e; } } void pop(sqstack *s,int *e) { if((*s).top==(*s).base) { printf("栈空!\n"); } else { (*e)=*(*s).top; (*s).top--; } } void print(sqstack s) { int i=0; printf("元素:"); int*p=s.base+1; for(i=0;i

阅读量:202

点赞量:0

问AI
万码UQ7VOTZJ
void push(sqstack* s, int e) { if ((*s).top - (*s).base == (*s).stacksize) { printf("栈满!\n"); } else { (*s).top++; *(*s).top = e; } } 问题在push函数里,入栈操作时,先对栈顶指针进行了自增