|
发表于 2019-3-29 13:26:52
|
显示全部楼层
哥,我的也出现这个毛病,帮我看看呗?
- #include<stdio.h>
- #include<stdlib.h>
- #define STACK_INIT_SIZE 100
- #define STACKINCREMENT 10
- typedef int ElemType;
- typedef struct
- {
- ElemType *base;
- ElemType *top;
- int stackSize;
- }sqStack;
- void initStack(sqStack *s)
- {
- s->base = (ElemType*)malloc(sizeof(ElemType)*STACK_INIT_SIZE);
- if(!s->base)
- exit(0);
- s->top = s->base;
- s->stackSize = STACK_INIT_SIZE;
- }
- void Push(sqStack *s, ElemType e)
- {
- if(s->top - s->base >= s->stackSize)
- {
- s->base = (ElemType*)realloc(s->base, (s->stackSize + STACKINCREMENT)*sizeof(ElemType));
- if(!s->base) exit(0);
- s->top = s->base + s->stackSize;
- s->stackSize += STACKINCREMENT;
- }
- *(s->top) = e;
- s->top++;
- }
- ElemType Pop(sqStack *s)
- {
- if(s->top == s->base) return NULL;
- return *--(s->top);
- }
- void ClearStack(sqStack *s)
- {
- s->top =s->base;
- }
- void DestroyStack(sqStack *s)
- {
- int i,len;
- len = s->stackSize;
- for(i=0;i<len;i++)
- {
- free(s->base);
- s->base++;
- }
- s->base = s->top = NULL;
- s->stackSize = 0;
- }
- int StackLen(sqStack s)
- {
- return (s.top-s.base);
- }
- int main()
- {
- ElemType sum=0,a=1,i,len;
- char e;
- sqStack *s;
- s = (sqStack*)malloc(sizeof(sqStack));
- initStack(s);
- scanf("%c",&e);
- while(e!='#')
- {
- Push(s, (int)(e-48));
- scanf("%c",&e);
- }
- getchar();
- len = StackLen(*s);
- printf("栈的当前容量是:%d\n",len);
- for(i=0; i<len; i++)
- {
- a *= 2;
- sum += Pop(s)*a/2;
- }
- printf("%d",sum);
- DestroyStack(s);
- free(s);
- s=NULL;
- return 0;
- }
复制代码 |
|