温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素

发布时间:2020-07-31 19:20:01 来源:网络 阅读:2378 作者:岩枭 栏目:编程语言

顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。

代码如下:

#include<iostream>

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,将传地址方式改为传值方式。传值比传地址容易理解,但传地址比传值更节省空间与时间。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI