- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言数据结构第04讲栈
实用数据结构基础;第 3 章 栈 ;要 求
掌握栈的特点
掌握栈的基本运算
熟悉栈的各种实际应用
能设计栈的应用的典型算法
了解栈的运算时间复杂度分析;第3章 目录;3-1 栈的定义和运算;2. 栈的特性
(1)栈的主要特点是“后进先出”
(2)允许插入、删除的这一端称为栈顶(Top),另一端称为栈底(Bottom)。
3. 应用实例
(1)分币筒;
(2)铁路调度站。
;3-1-2 栈的运算
1.进栈: Push(s,x)
初始条件:栈s已存在且非满。
操作结果:在栈顶插入一个元素x,栈中多了一个元素。
2.出栈:Pop(s)
初始条件:栈s存在且非空。
操作结果:删除栈顶元素,栈中少了一个元素。
3.读栈顶元素:ReadTop(s,e)
初始条件:栈s已存在且非空。
操作结果:输出栈顶元素,但栈中元素不变。;4. 判栈空:SEmpty(s)
初始条件:栈s已存在。
操作结果:若栈空则返回为0,否则返回为1。
5. 判栈满:SFull(s)
初始条件:栈s已存在。
操作结果:若栈满则返回为0,否则返回为1。
6. 显示栈元素:ShowStack (s)
初始条件:栈s已存在?,且非空。
操作结果:显示栈中所有元素。;3-2 栈的存储和实现;(2) 用结构体数组实现顺序栈
顺序栈的结构体描述:
#define MAXLEN 10 // 分配最大的栈空间
typedef struct // 定义结构体
{ datatype data[MAXLEN]; // datatype可根据用需要定义类型
int top; // 定义栈顶指针
} SeqStack;
再定义一个指向顺序栈的指针:
SeqStack *S; // 定义S为结构体类型的指针变量;(3)栈操作的示意图如图3-3所示。 ; 当top = -1时,表示栈空,如图3-3(a);
当top=0时,表示栈中有一个元素,如图3-3(b)表示栈中已输入一个元素A;
入栈时,栈顶指针上移,指针top加1,如图3-3(c)是6个元素入栈后的状况;
出栈时,栈顶指针下移,指针top减1, 如图3-3(d)是在F、E相继出栈后的情况。此时栈中还有A、B、C、D 4个元素,top=3,指针已经指向了新的栈顶。但是出栈的元素F、E仍然在原先的存储单元,只是不在栈中了,因为栈是只能在栈顶进行操作的线性表。
当top=9时,即top=MAXLEN–1,表示栈满,如图3-3(e)。;2.顺序栈运算的基本算法
(1)置空栈
首先建立栈空间,然后初始化栈顶指针。
SeqStack *Snull()
{ SeqStack *s;
s=new (SeqStack);
// 在C语言中用s=malloc(sizeof(SeqStack));
s-top= –1; // 置栈空
return s;
} ;(2) 进栈
进栈运算是在栈顶位置插入一个新元素x,其算法步骤为:
(a)??? 判栈是否为满,若栈满,作溢出处理,并返回0;
(b)??? 若栈未满,栈顶指针top加1;
(c)??? 将新元素x送入栈顶,并返回1。
int Push (SeqStack *s, datatype x)
{ if (s-top= =MAXLEN–1) return 0;
// 栈满不能入栈,且返回 0
else { s-top++;
s-data[s-top]=x; // 栈不满,则压入元素x
return 1;} // 进栈成功,返回1
};(3)出栈
出栈运算是指取出栈顶元素,赋给某一个指定变量x,其算法步骤为:
(a)? 判栈是否为空,若栈空,作下溢处理,并返回0;
(b) 若栈非空,将栈顶元素赋给变量x;
(c)? 指针top减1,并返回1。
int Pop(SeqStack *s, datatype
您可能关注的文档
- aaw成功的客户服务沟通.ppt
- 9人民当家作主的法治国家.ppt
- ABB内部电路讲训.ppt
- 9的乘法口诀演示课件45.ppt
- 9的乘法口诀教学演示课件.ppt
- AB小企业物流成本的案例.pptx
- aclCEO的财务讲训资料[ppt95].ppt
- AMT的管理咨询的案例剖析大赛[服装行业].ppt
- AltiumDesigner电子工程师讲训2.ppt
- ABC法则篇[小爽直销事业手则].ppt
- 人教版数学九年级上册《 二次函数》说课稿(共19张PPT).ppt
- 人教版八年级上册 12.2.2三角形全等的判定 “边角边”判定三角形全等 (共22张PPT).ppt
- 人教版初中数学2011课标版八年级上册第十二章12.2 三角形全等的判定 课件(共16张PPT).ppt
- 人教版九年级第十单元课题1浓硫酸1 (共18张PPT).ppt
- 人教版初中数学七年级上册 1.4 有理数的乘除法(共22张PPT).ppt
- 人教版八年级物理上册第1章 第2节运动的描述习题课件(共20张PPT).ppt
- 人教版九年级课题2酸和碱之间会发生什么反应(共21张PPT).ppt
- 人教版初中物理2011课标版 九年级 第十八章 电功率第三节 测量小灯泡的电功率(共25张PPT).pptx
- 人教版初中数学2011课标版九年级上册第二十四章24.1圆的有关性质(共17张PPT).ppt
- 人教版初中数学2011课标版九年级上册21.2解一元二次方程(共22张PPT).pptx
原创力文档


文档评论(0)