结构体实现栈 #include"stdio.h" #include"stdlib.h" #include"string.h" typedef struct { int arr[100];//存元素 int len;//放入的位置 int top;//栈顶 int size;//元素个数 //指针域 }node; node *init() { node* p = (node*)malloc(sizeof(node)); memset(p, 0, sizeof(node));//逐字节初始化 就是一个字节一个字节的初始化 p->top = 100; return p; } //入栈 void push(node* n, int data) { if (n->len >= n->top)//判断是否到达栈顶 return; n->arr[(n->len)++] = data; n->size++; } //出栈 int pop(node* n) { (n->len)--; n->size--; return n->arr[n->len]; } int isEmpty(node *n) { printf("元素个数为0"); return n->size == 0; } int main() { node *n = init(); for (int i = 0; i < 10; i++) { push(n, i + 1); } for (int i = 0; i < 10; i++) { printf("拿出%2d\n", pop(n)); printf("元素个数还有%2d个\n", n->size); /*printf("拿出%2d,元素个数还有%2d个\n", pop(n), --n->size); n->size++;*/ } free(n); n = NULL; return 0; }