//static.h #include <stdlib.h> #include <stdio.h> #include <memory.h> #define N 100 typedef struct stack { int data[N]; int top;//标识栈顶 }Stack; void init(Stack *p);//初始化 int isEmpty(Stack *p);//判断栈是否空 int isFull(Stack *p);//判断栈溢出 int getTop(Stack *p);//获取栈顶 void push(Stack *p, int key);//插入数据 void pop(Stack *p);//出栈 void show(Stack *p); //stack.c #include "static.h" void init(Stack *p)//初始化 { p->top = -1;//代表为空 memset(p->data, 0, sizeof(int)*N);//数据清零 } int isEmpty(Stack *p)//判断栈是否空 { if (p->top == -1) { return 1;//1为空 } else { return 0; } } int isFull(Stack *p)//判断栈溢出 { if (p->top == N - 1) { return 1;//溢出 } else { return 0; } } int getTop(Stack *p)//获取栈顶 { return p->data[p->top];//获取栈顶 } void push(Stack *p, int key)//插入数据 { if (isFull(p) == 1) { return; } else { p->top++; p->data[p->top] = key;//压入数据 } } void pop(Stack *p)//出栈 { if (isEmpty(p) == 1) { return; } else { p->top -= 1; } } void show(Stack *p) { if (isEmpty(p) == 1) { return; } else { printf(" 栈的数据是 "); for (int i = 0; i <= p->top; i++) { printf("%4d", p->data[i]); } printf(" "); } } //main.c #include "static.h" void main() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; Stack myStack; init(&myStack); for (int i = 0; i < 10; i++) { push(&myStack, a[i]); } while (!isEmpty(&myStack)) { printf("%d", getTop(&myStack)); pop(&myStack); } printf(" "); system("pause"); }