stack3.c

来自「自己做的常用库和实现的数据结构。public domain.」· C语言 代码 · 共 62 行

C
62
字号
#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 + =
减小字号Ctrl + -
显示快捷键?