- 论坛徽章:
- 0
|
结果输出来总是有问题,输出3个问号。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define INI_SIZE 20;
#define INCREMENT 10;
typedef struct SElem
{
char c;
} Elem;
typedef struct SStack
{
Elem * base;
Elem * top;
int stacksize;
} Stack;
void initStack(Stack *s)
{
Elem * elem = (Elem *)malloc(20 * sizeof(Elem));
if(!elem) exit(0);
s->base = elem;
s->stacksize = 20;
s->top = s->base;
return;
}
void push(Stack *s,Elem elem)
{
if(s->top - s->base >= s->stacksize)
{
s->base = (Elem *)realloc(s->base,(s->stacksize + 10) * sizeof(Elem));
if(!s->base) exit(0);
s->top = s->base + s->stacksize;
s->stacksize += 10;
}
*s->top = elem;
s->top++;
}
int pop(Stack *s,Elem *e)
{
if(s->top == s->base) return 0;
s->top--;
e = s->top;
return 1;
}
int isEmpty(Stack s)
{
return s.top == s.base;
}
int main(void)
{
Stack s;
initStack(&s);
Elem e1,e2,e3,e;
e1.c = 'a';
push(&s,e1);
e2.c = 'b';
push(&s,e2);
e3.c='c';
push(&s,e3);
while(!isEmpty(s))
{
if(pop(&s,&e)){
printf("%c ",e.c);
}
}
printf("\n");
return 1;
} |
|