📄 stack3.c
字号:
#include<my.h>#define STACK_INIT_SIZE 100#define STACK_INCREMENT 10#define MAX 10typedef struct data { int e;} DATA;typedef struct stack { DATA *top, *base; size_t stacksize;} STACK;void init_stack(STACK * const p){ p->top = p->base = (DATA *)mem('m', STACK_INIT_SIZE * sizeof(DATA)); p->stacksize = STACK_INIT_SIZE;}void push(STACK *p, int data){ if(p->top - p->base >= p->stacksize) { p->base = (DATA *)mem('r', p->base, (p->stacksize + STACK_INCREMENT) * sizeof(DATA)); p->top = p->base + p->stacksize; p->stacksize += STACK_INCREMENT ; } p->top->e = data; p->top++;}int stack_empty(const STACK *p){ return p->top != p->base ? 0 : 1;}void pop(STACK * const p, int *q){ if(! stack_empty(p)) { p->top--; *q = p->top->e; }}void destroy_stack(const STACK const *p){ mem('f', p->base);}int main(){ STACK b, *p = &b; int i,a[MAX]; init_stack(p); for(i=0; i<MAX; i++) push(p, i+1); for(i=0; i<MAX; i++) pop(p, &a[i]); for(i=0; i<MAX; i++) printf("%d ", a[i]); destroy_stack(p); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -