(一)栈的数组结构体
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;
}
全部的组合代码
#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;
}