#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
//定义栈
typedef struct stack
{
char data[MaxSize];//数组实现栈内元素定位
int top;//作为数组下标
int buttom;
} stack;
//创建一个空栈
stack * CreateStack()
{
stack * st = (stack*)malloc(sizeof(stack));
if(st == NULL)
return ;//分配空间失败
st->top = st->buttom = 0;
return st;
}
//入栈
void Push(stack * st, char data)
{
st->data[st->top]= data;
st->top++;
}
//出栈
void Pop(stack * st, char data)
{
int n = st->top;
while(n != st->buttom)//判断是否是空栈
{
if(st->data[n-1] == data)
{
st->top = n-1;
break;
}
n--;
}
}
//打印栈元素
void Display(stack * st)
{
int n = st->top;
while(n != st->buttom)
{
printf("%c ",st->data[n-1]);
n--;
}
printf("\n");
}
int main()
{
int i=5,j=5;
stack * st;
st = CreateStack();
printf("开始进栈:\n");
while(i--)
{
Push(st,'A'+i);
printf("%c入栈后,栈内元素为: ",'A'+i);
Display(st);
}
printf("开始出栈:\n");
while(j--)
{
Pop(st,'E'-j);
printf("%c出栈后,栈内元素为: ",'E'-j);
Display(st);
}
return 0;
}