//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("\n栈的数据是\n");
for (int i = 0; i <= p->top; i++)
{
printf("%4d", p->data[i]);
}
printf("\n");
}
}
//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("\n");
system("pause");
}