栈是数据结构中的重要算法之一,又称为堆栈,是一种受限制的数据结构,其受限制的地方是只能在结构的尾端进行插入和删除操作。在可以操作的一端成为栈顶,通常设为top,在最先插入数据的地方成为栈底,当top=栈底就意味着栈空。栈的操作一般有:初始化栈(InitStack),进栈(Push),出栈(Pop),判断栈空(IsEmpty)等等。
以下给出数组实现堆栈的方法:
#include < iostream >
#define MAXSIZE 10
typedef int Elemtype
typedef struct _stack//栈的结构
{
Elemtype arr[MAXSIZE];
int top;
} stack;
bool InitStack(stack *s)//初始化堆栈
{
s->top = -1;
}
bool IsEmpty(stack *s)//判断栈空
{
if(s->top == -1)
return TRUE;
return FALSE;
}
bool IsFull(stack *s)//判断栈满
{
if(s->top == MAXSIZE)
return TRUE;
return FALSE;
}
bool push(stack *s, Elemtype data)//压入栈
{
if(IsFull())
return FALSE;
++s->top;
s->arr[s->top] = data;
return TRUE;
}
bool pop(stack *s, Elemtype *data)//弹出栈
{
if(IsEmpty())
{
return FALSE;
}
*data = s->arr[s->top];
-- s->top;
return TRUE;
}