数据结构与算法——栈的表示和实现-ag九游会j9官方网站
ag九游会j9官方网站-j9九游会登录入口首页新版
ag九游会j9官方网站-j9九游会登录入口首页新版
api
j9九游会登录入口首页新版的解决方案
学堂
社区
控制台
注册
登录
/
/
文章详情
/
数据结构与算法——栈的表示和实现
2023-06-29
16 浏览
返回文档
江海入海,知识涌动,这是我参与江海计划的第7篇
目录
1.栈的抽象数据类型的定义
2.顺序栈的表示和实现编辑
3.顺序栈的初始化
4.判断栈是否为空
5.求顺序栈的长度
6.清空顺序栈
7.销毁顺序栈
8.顺序栈的入栈
9.栈的出栈(顺序栈)
1.栈的抽象数据类型的定义
adt stack{
数据对象:
d={ai|ai属于elemset,i=1,2,...,n,n>=0}
数据关系:
r1={
|ai-1,ai属于d,i=2,...,n}
an端为栈顶,a1端为栈底
基本操作:
初始化,进栈,出栈,取栈顶元素等。
}adt stack
2.顺序栈的表示和实现
栈的顺序存储——顺序栈
栈的链式存储——链栈
存储方式:
同一般线性表的顺序存储结构完全相同
利用一组地址连续的存储单元依次存放,自栈底到栈顶的数据元素,栈低一般在低地址端
附设top指针,指示栈顶元素在顺序栈的位置
另外base指针,指示栈底元素在顺序战中的位置
3.顺序栈的初始化
status initstack(s1stack &s){
//构造一个空栈
s.base=new selemytype[maxsize];
if(!s.base)
exit(overflow); //存储分配失败
s.top=s.base; //栈顶指针等于栈底指针
s.stacksize=maxsize;
return ok;
}
4.判断栈是否为空
status stackempty(sqstack s){
//若栈为空,返回true;否则返回false
if(s.top=s.base)
return true;
else
return false;
}
5.求顺序栈的长度
in stacklength(sqstack s)
{
return s.top-s.base;
}
6.清空顺序栈
status clearstack(sqstack s){
if(s.base)
s.top=s.base
//如果s.base存在将s.base赋值给s.top
return ok;
}
7.销毁顺序栈
status destroystack(aqstack &s){
if(s.base){
delete s.base;
s.stacksize=0;
s.base=s.top=null; //若不置为空则s.base与s.top 为也指针
}
return ok;
}
8.顺序栈的入栈
判是否栈满,若满则出错(上溢)
元素e压入栈顶
栈顶指针加一
status push(sqstack &s,selemtype e){
if(s.top-s.base==s.stacksize) //栈满
return error;
*s.top =e; //或者*s.top=e; s.top ;
return ok;
}
9.栈的出栈(顺序栈)
判断是否栈空,若空则出错(下溢)
栈指针减一
获取栈顶元素e
status pop(sqstack &s,selemtype e){
//若栈不空则删除栈顶元素,用e返回其值,并返回ok;否则返回error
if(s.top==s.base) //等价于if(stackemptu (s))
return error;
e=*--s.top;
return ok;
}
请
登录
后发表内容
关 注
相关文章
热门文章
【倒计时10天】企业数据安全接口人职业能力认证
支付宝开发者日·厦门站
探索隐私计算与精准营销的应用创新——产品面对面系列直播第三期
【获奖名单公布】工具类小程序话题讨论,你中奖了吗?
报名开启丨邀你一起探索云端 ai 新兴技术和发展模式
热门问答
影视创作剪辑怎么提供资质
支付宝商家粉丝群
我的小程序上架三天被判违规,直接被下架了
2023/09/17(至今3天没人解决) 当面付 统一收单线下交易预创建接口 官方php easysdk验签语法错误
这些小程序名称恶意“蹭热度”,“蹭流量”而使用与热门活动或支付宝官方相同或相似的名称,从而引起用户混淆!
您的社区活跃积分 3,登录后即可领取
网站地图