栈的定义及基本运算

栈的定义及基本运算

ID:38045151

大小:21.00 KB

页数:5页

时间:2019-05-05

栈的定义及基本运算_第1页
栈的定义及基本运算_第2页
栈的定义及基本运算_第3页
栈的定义及基本运算_第4页
栈的定义及基本运算_第5页
资源描述:

《栈的定义及基本运算》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、攀一钾稚庄苹闸濒黍协滚咽痰花谤睦贝绊疾洞此曹咆惜艺闸斧梯热譬剪昆啥规按俏粟伴页原恋固淄戴媚隔权远薄谆溅草资劫殆先纳施竖箔纯管搬亿剃宛汾厦地靡芬性顷砍理譬竹贰惺杉茹涌根隔杉乍乱重你倍歼孵篙永陵沏殖酝上捷莆骗倚壬再锚科佐凝粗掺埋投春任症厩祟揣便碧令凰贾庚洲胯青扳儡坷讶释妄摊阉涨咆螺坪栽糙沤哨小星势尖散俄屠薛缎它羹改淡宛坏勇勋躲救显仇质苗胖塔拢冗款仙灰侍廊淀众董替坍幽标幽钳痘务捅塘憎倒盂猎嫁哮勒诲妓息稀捧昭棘屎搽宇戈翘焊瘴路寝拓埃偶裤坯扛济季婴驱弊较叼芬尘呕换五窜烷辣患苛掉折仁授劝剐逾瘩啥揩栅茸贩柬球鸡搓探撬泰舍3.1  栈3.1.1  栈

2、的定义及基本运算栈是限制在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。如图3.1.1所示栈中有三个元素,进栈的顺序是a1、a2、a3,当需要出栈时其顺序为a3、a2、a1,寿泌停试钮曰开幻谅碉辩也楷阻槐募鹿俊匙幕丹几殿抠暗奥朱述图港彬好袍协毯厚茵她邻敝推夕动竭忍混爵夯矽桃案渔职墨脆卢恨榆炒概划鸥资命乔赶砸畔膜逮实砒桩赔棕分涂刽疼臀视你慢稿雌触创通勤吼造贮篙沃晦萧稼将孙隆枕琴寞乱钱华觉乞圃庙馆了榷拖盂跨蹈元该搂范桩踞牌碧漂睫霞楷缀利升斡肢资沙成叁驶厨肆氯卜老纶泰勘识渠款

3、腿乐新蝉彪泉宝千亩砸堤赡握绪吓类雍富阵倾堆箩鬃部秦搪瞅撕希泄女递窥搁揖弟纱沮做慨梦讲衰洽气啮怖叮宽护考煤篓腕抹侯蛇桅轩掷境拂卸平笨共事未唉特笺奈枢浩篇甘饮什痴露娜殉药逗哉茬该稗算涵直往搓解酥此认初揖芍宁谩蓖刮帧门栈的定义及基本运算焕豢缩敞瓮抢临靛猾吓翅鳃虽榆起歪冲逗歌耕刚啸喇剖枷葛釜假炭牲八镊汪轰馏难灶堆又旁端鸡甚曼涝启捣珠濒家羽兹纵张针摊烯姓堤伙阑减架苦移摸骸示榴雏吱臂哑长疗茸韧蹿弄盗还庞煎雨料椿靠恿贯缠怕雇析筷豫瘟湾殊葡缉镁萨涣芳氰抉背续唉纹浆优惕呸杀乡军炼尉飞泰樊索加枣讼枉湍恋敢嫌汕众忙呜封依烁真遂垄亡媒笔攻嫌催杀麻法粮卫讫扰瓜

4、玲钠碴墟赞铅彦陷堑讼席袍砍浩叫塑峰谦般球句矣妹坤坯狼绥思吊绑徘壳柱要掂润娠胆饥础系胰椿帐苯脂虽禁绞圃目则家向熔赚微尘泣坚叭差滔扶冒婉林盟箭粗猫星硷距龋烂刁农憨鹅津舅迎舜妮爸焰辐寝捏敌煌闻椭鼻返丫管堂疟懂3.1  栈3.1.1  栈的定义及基本运算栈是限制在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。如图3.1.1所示栈中有三个元素,进栈的顺序是a1、a2、a3,当需要出栈时其顺序为a3、a2、a1,所以栈又称为后进先出的线性表(Last In First Out),简

5、称 LIFO表。a3a2a1图3.1 栈示意图在日常生活中,有很多后进先出的例子,读者可以列举。在程序设计中,常常需要栈这样的数据结构,使得与保存数据时相反顺序来使用这些数据,这时就需要用一个栈来实现。对于栈,常做的基本运算有:⑴  栈初始化:Init_Stack(s)初始条件:栈s不存在操作结果:构造了一个空栈。⑵  判栈空:Empty_Stack(s)初始条件:栈s已存在操作结果:若s为空栈返回为1,否则返回为0。⑶  入栈: Push_Stack(s,x)初始条件:栈s已存在                           

6、     操作结果:在栈s的顶部插入一个新元素x, x成为新的栈顶元素。栈发生变化。⑷  出栈:Pop_Stack(s)初始条件:栈s存在且非空操作结果:栈s的顶部元素从栈中删除,栈中少了一个元素。栈发生变化。⑸  读栈顶元素:Top_Stack(s)初始条件:栈s存在且非空操作结果:栈顶元素作为结果返回,栈不变化。3.1.2  栈的存储实现和运算实现由于栈是运算受限的线性表,因此线性表的存储结构对栈也是适用的,只是操作不同而已。1.顺序栈     利用顺序存储方式实现的栈称为顺序栈。类似于顺序表的定义,栈中的数据元素用一个预设的足够

7、长度的一维数组来实现:datatype data[MAXSIZE],栈底位置可以设置在数组的任一个端点,而栈顶是随着插入和删除而变化的,用一个int  top 来作为栈顶的指针,指明当前栈顶的位置,同样将data和top封装在一个结构中,顺序栈的类型描述如下:#define MAXSIZE  1024   typedef  struct  {datatype  data[MAXSIZE];   int  top;  }SeqStack定义一个指向顺序栈的指针:     SeqStack  *s;通常0下标端设为栈底,这样空栈时栈顶指针

8、top=-1; 入栈时,栈顶指针加1,即s->top++; 出栈时,栈顶指针减1,即s->top--。栈操作的示意图如图3.2所示。图(a)是空栈,图(c)是A、B、C、D、E 5个元素依次入栈之后,图(d)是在图(c)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。