下面代码设定“操作数”、"操作符”的栈的抽象数据类型的
|
只要操作数和操作符的具体节点的列举谢谢!typedefstruct{float*base;float*top;intstacksize;}SqStack_f;typedefstruct{char*base;char*top;intstacksize;}SqStack_c;voidInitStack_f(SqStack_f*s){s->base=(float*)malloc(TTACK_INIT_SIZE*sizeof(float));if(!s->base)exit(1);s->top=s->base;s->stacksize=TTACK_INIT_SIZE;}voidInitStack_c(SqStack_c*s){s->base=(char*)malloc(TTACK_INIT_SIZE*sizeof(char));if(!s->base)exit(1);s->top=s->base;s->stacksize=TTACK_INIT_SIZE;}voidGetTop_f(SqStack_f*s,float*e){if(s->top==s->base){printf("ERROR!\n");exit(1);}*e=*(s->top-1);}voidGetTop_c(SqStack_c*s,char*e){if(s->top==s->base){printf("ERROR!\n");exit(1);}*e=*(s->top-1);}voidPush_f(SqStack_f*s,floate){if(s->top-s->base>=s->stacksize){s->base=(float*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(float));if(!s->base){printf("OVERFLOW!\n");exit(1);}s->top=s->base+s->stacksize;s->stacksize+=STACKINCREMENT;}*s->top++=e;}voidPush_c(SqStack_c*s,chare){if(s->top-s->base>=s->stacksize){s->base=(char*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(char));if(!s->base){printf("OVERFLOW!\n");exit(1);}s->top=s->base+s->stacksize;s->stacksize+=STACKINCREMENT;}*s->top++=e;} |
免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。
版权声明:作者保留权利,不代表本站立场。
|
|
|
|
|
|
|