|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 圣狄雅哥 于 2018-1-28 21:26 编辑
#define SATCKINCREMENT 10
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 = s->stackSize + STACKINCREMENT; // 设置栈的最大容量
}
*(s->top) = e;
s->top++;
}
version1.c
- #include <stdio.h>
- typedef int ElemType;
- typedef struct
- {
- ElemType *base;
- ElemType *top;
- } sqStack;
- void InitStack(sqStack *stack, ElemType *begin, ElemType *end);
- void Push(sqStack *stack, ElemType e);
- void Pop(sqStack *stack, ElemType *e);
- int main()
- {
- ElemType buff[100];
- sqStack stack;
- ElemType e;
- InitStack(&stack, buff, buff + (sizeof(buff) / sizeof(buff[0])));
- for(int i = 0; i < 10; ++i)
- {
- Push(&stack, i);
- }
- for(int i = 0; i < 10; ++i)
- {
- Pop(&stack, &e);
- printf("%d ", e);
- }
- printf("\n");
- return 0;
- }
- void InitStack(sqStack *stack, ElemType *begin, ElemType *end)
- {
- stack->base = begin;
- stack->top = end;
- }
- void Push(sqStack *stack, ElemType e)
- {
- *--stack->top = e;
- }
- void Pop(sqStack *stack, ElemType *e)
- {
- *e = *stack->top++;
- }
复制代码
version2.c
- #include <stdio.h>
- typedef int ElemType;
- typedef struct
- {
- ElemType *base;
- ElemType *top;
- } sqStack;
- void InitStack(sqStack *stack, ElemType *begin, ElemType *end);
- void Push(sqStack *stack, ElemType e);
- void Pop(sqStack *stack, ElemType *e);
- int main()
- {
- ElemType buff[100];
- sqStack stack;
- ElemType e;
- InitStack(&stack, buff, buff + (sizeof(buff) / sizeof(buff[0])));
- for(int i = 0; i < 10; ++i)
- {
- Push(&stack, i);
- }
- for(int i = 0; i < 10; ++i)
- {
- Pop(&stack, &e);
- printf("%d ", e);
- }
- printf("\n");
- return 0;
- }
- void InitStack(sqStack *stack, ElemType *begin, ElemType *end)
- {
- stack->base = begin;
- stack->top = end - 1;
- }
- void Push(sqStack *stack, ElemType e)
- {
- *stack->top-- = e;
- }
- void Pop(sqStack *stack, ElemType *e)
- {
- *e = *++stack->top;
- }
复制代码
|
|