顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素-创新互联
顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。
成都创新互联坚信:善待客户,将会成为终身客户。我们能坚持多年,是因为我们一直可值得信赖。我们从不忽悠初访客户,我们用心做好本职工作,不忘初心,方得始终。十载网站建设经验成都创新互联是成都老牌网站营销服务商,为您提供网站设计制作、成都网站设计、网站设计、H5响应式网站、网站制作、成都品牌网站建设、微信小程序服务,给众多知名企业提供过好品质的建站服务。代码如下:
#include
using namespace std;
#define TRUE 1
#define FALSE 0
//顺序栈的存储结构
#define Stack_Size 50 //设栈中元素个数为50
typedef struct
{
int elem[Stack_Size];//用来存放栈中元素的一维数组
int top;//用来存放栈顶元素的下标,top=-1表示空栈
}SeqStack;
//初始化顺序栈
void InitStack(SeqStack *S)
{
S->top = -1;//构造一个空栈
}
//顺序栈进栈运算,首先判断栈是否已满,若栈已满,还要进栈就会发生上溢
int Push(SeqStack *S,int x)//将x置入S栈新栈顶
{
if (S->top == Stack_Size - 1)//栈已满
{
return FALSE;
}
S->top++;
S->elem[S->top] = x;//把x入栈
return TRUE;
}
//顺序栈出栈运算,首先判断栈是否为空,若栈空,还要出栈就会发生下溢
int Pop(SeqStack *S, int *x)//将S栈顶元素弹出,放到x所指的存储空间中带出
{
if (S->top == - 1)//栈为空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
S->top--;//修改栈顶指针
return TRUE;
}
}
//顺序栈读栈顶元素运算
int GetPop(SeqStack *S, int *x)//将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保持不变
{
if (S->top == -1)//栈为空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
return TRUE;
}
}
注意:在实现GetPop操作时,也可将参数SeqStack *S改为SeqStack S,将传地址方式改为传值方式。传值比传地址容易理解,但传地址比传值更节省空间与时间。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素-创新互联
文章出自:http://pwwzsj.com/article/igghe.html