define MAXSIZE 100 /* 栈的最大容量 */
typedef enum {false, true} bool;
typedef int SElemType;
typedef struct{ /* 顺序栈 */
SElemType data[MAXSIZE];
int top; //栈顶指针 ,约定指向栈顶元素的下一个位置
} SqStack;
/* ------------顺序栈的运算实现----------------- */
void initSqStack(SqStack *s)
{
s->top= 0;
}
/* ----判断栈空------ /
bool isEmptyStack(SqStack s)
{
if (s.top==0) //栈顶指针指向栈顶元素的下一个位置
return true;
else
return false;
}
/ -----------入栈操作----------------- */
bool push(SqStack s,SElemType e) / s指向栈的指针变量,指针作为参数,可以将变化后的栈的值传递出来 /
{
if (s->top >=MAXSIZE)
return false;
else
{
s->data[s->top]=e; //先插入,
s->top ++; //栈顶指针后加1
//相当于 s->data[s->top++]
return true;
}
}
/ --------出栈操作------- */
bool pop(SqStack *s,SElemType e) / 指针作为参数,可将修改后的值传递出来 */
{
if (s->top ==0)
return false ;
else
{
--s->top; //栈顶指针先减1
*e=s->data[s->top]; //再读取删除元素
//*e=s->data[--s->top ]; //等价
return true;
}
}
SElemType getTop(SqStack s)
{
SElemType e;
if (s.top ==0)
return false ;
else
{
e=s.data[s.top-1];
return e;
}
}