1.顺序栈的定义
#define maxn 10//栈中元素最大个数
//栈的定义
typedef struct {
int data [maxn];//静态数组存放栈内元素
int top;
} Sq_stack;
2.栈的初始化
//栈的初始化
void Init_stack ( Sq_stack &S ){
S.top = -1;//top指针指向-1型,还有指向0型
}
3.进栈操作
//进栈操作
Push ( Sq_stack &S, int x ){
if ( S.top == maxn - 1 )
return false;
S.data [ ++S.top ] = x;//栈顶指针先加1再赋值
return true;
}
4.出栈(删除)操作
/弹出(删除)栈顶元素
Pop ( Sq_stack &S, int &x ){
if ( S.top == -1 )//确定栈非空,再操作
return false;
x = S.data [ S.top-- ]//先取值,再移栈顶指针
return false;
}
5.获取栈顶元素
//读栈顶元素
Gettop ( Sq_stack S, int &x ){
if ( S.top == -1 )
return false;
x = S.data [ S.top ];
return true;
}
6.判断栈空否
Stack_empty ( Sq_stack S ){
if ( S.top == -1 )
return true;
else
return false;
}
7.共享栈的定义与初始化
//共享栈的定义
typedef struct {
int data [ maxn ];
int top0; //0号栈栈顶指针
int top1; //1号栈栈顶指针
}Shr_stack;
//共享栈的初始化
Init_stack ( Shr_stack &S ){
S.top0 = -1; //初始化栈顶指针
S.top1 = maxn;
}
【注】以上栈皆为top指针指向-1类型。