栈的基本操作-指针

来源:互联网 发布:华为p9优化 编辑:程序博客网 时间:2024/06/13 23:18
#define ERROR 0#define OVERFLOW -2#define Stack_init_size 100#define Stackincrement 10#include<iostream.h>#include<malloc.h>#include<stdlib.h>#include<stdio.h>typedef int SElemType;typedef struct{SElemType *base;SElemType *top;int stacksize;} SqStack;void InitStack(SqStack *S){//传入的是指针,我需要的是指针的类型故加星号int i,n;SElemType e;S->base = (SElemType *)malloc(Stack_init_size*sizeof(SElemType));if(!S->base)return ;S->top = S->base;//?????S->stacksize = Stack_init_size;}void Push(SqStack *S,SElemType e){if(S->top - S->base>=S->stacksize){S->base = (SElemType *)realloc(S->base,(S->stacksize+Stackincrement)*sizeof(SElemType));//为什么不是S->top??????S->top = S->base+S->stacksize;//1S->stacksize = S->stacksize+Stackincrement;//2:为什么1和2的位置不对换呢????}*S->top = e;S->top ++;}void Pop(SqStack *S){SElemType e;if(S->top==S->base)return ;S->top--;e=*S->top;printf("要输出的元素:%d\n",e);}void main(){SElemType e;SqStack S;InitStack(&S);Push(&S,3);Push(&S,4);Push(&S,5);Push(&S,6);Pop(&S);Pop(&S);Pop(&S);Pop(&S);}