首先定义一个栈的结构体
#define MAX_SIZE 100
typedef int DataType;
typedef struct Stack
{
DataType array[MAX_SIZE];
int top;
}Stack;
// 栈的初始化
void StackInit(Stack* ps);//打印链表
void StackPrint(Stack*ps);
// 入栈
void StackPush(Stack* ps, DataType data);
// 出栈
void StackPop(Stack* ps);
// 获取栈顶元素
DataType StackTop(Stack* ps);
// 获取栈中元素个数
int StackSize(Stack* ps);
// 检测栈是否为空
int StackEmpty(Stack* ps);
//清空栈
Stack ClearStack(Stack*ps);
//销毁栈
Stack DestroyStack(Stack *S);
1.栈的初始化
void StackInit(Stack* ps)
{
if (NULL == ps)
{
return;
}
ps->top = 0;
return;
}
2.栈的插入
void StackPush(Stack* ps, DataType data)
{
if (NULL == ps)
{
return;
}
if (MAX_SIZE == ps->top)
{
printf("栈已满!!!\n");
}
else{
ps->array[ps->top] = data;
ps->top++;
}
return;
}
3.出栈
void StackPop(Stack* ps)
{
if (NULL == ps)
return;
ps->top--;
}
4.获取栈顶元素
DataType StackTop(Stack* ps)
{
if (NULL == ps)
return 0 ;
return ps->array[ps->top-1];
}
5.获取栈中元素个数
int StackSize(Stack* ps)
{
if (NULL == ps)
return 0;
return ps->top;
}
6.检测栈是否为空
int StackEmpty(Stack* ps)
{
if (NULL == ps)
return -1;
else return 1;
}
7.打印栈
void StackPrint(Stack*s)
{
if (NULL == s)
return;
int i = 0;
for (i = 0; i < s->top; i++)
{
printf("%d--", s->array[i]);
}
printf("\n");
return;
}
8.清空栈
Stack ClearStack(Stack*ps)
{
ps->top = 0;
return *ps;
}
9.销毁栈
Stack DestroyStack(Stack *ps)
{
ps->top = 0;
return *ps;
}