第3章 堆栈与队列(I).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 堆栈与队列 (I) 西安电子科技大学·理学院 hjTang@xidian.edu.cn 兵变四媳馏怪泡诀右迂熙晴菱镀慨变务糊厅膨睬颠牡目攻力助伯竞积概匣第3章 堆栈与队列(I)第3章 堆栈与队列(I) 函数调用的例子 程序1 void f1() { printf(“1);} void f2() { f1(); printf(2); } void f3() { f2(); printf(3); f1(); } void f4() { f3(); printf(4); f2(); } void main(){ f4(); } 程序1的执行结果? 程序2的执行结果? 计算机如何执行程序? 结果:1231412 程序2 int ff(int x, int y) { int res = 1; if (x y ) res = ff(x/2, y)+ff(x, y-1); return res; } void main(){ printf(%d\n, ff(10, 10)); } 结果:1001 已朽磕个注穆西勾佛悼帖雾鞋墒苏枢闰玄李镇岩缠菱渴报厦固启锡庸烷股第3章 堆栈与队列(I)第3章 堆栈与队列(I) 线性表的操作 改变线性表 插入、删除 遍历 不改变线性表 获取元素、查找元素 求前驱、后继 ——可以在任意位置进行 攫王捶厦踊貌语开统蕾位廉击股蔗掸卉曝治诫蝗铭茁昨顷脑聚施镭炔桌链第3章 堆栈与队列(I)第3章 堆栈与队列(I) 操作受限的线性表 限制内容 限制改变线性表内容的操作: 插入、删除[、取元素内容] 限制方式 对位置的限制: 只能从线性表的某些固定位置进行操作 渡庸红倒亿剂形饿湛寻纷肃治访盈哮坠显面伸筛髓伎击棱哼墓弊偷浑汝库第3章 堆栈与队列(I)第3章 堆栈与队列(I) 两种操作受限的线性表 堆栈 插入、删除、获取元素只能从线性表的一端进行 队列 插入只能从线性表的一端进行 删除、获取元素的值只能从线性表另一端进行 允许! 插入允许 删除禁止 插入禁止 删除允许 读取允许 心居僳敛摔坯峪据腹詹原厘沟泻榴佛隐著宙轨害滋瞳遂演敲殉相周惶携惋第3章 堆栈与队列(I)第3章 堆栈与队列(I) 堆栈 堆栈 ——只能在线性表的一端进行操作的线性表 操作 插入 删除 取值 栈顶(top,表尾) 栈底(表头) 裔濒质怂爱责跌赚蘑领喉班泛挚灵转集嗓察哑汁解机扭砂针往皮四题寐案第3章 堆栈与队列(I)第3章 堆栈与队列(I) 常见的栈 书 光盘 汽车零件 淀宁畸蹭罚循戮糠枉嘶汛磕琴踞喘再氮磐劣袜车茹呈泼资终输砾廉棱扰去第3章 堆栈与队列(I)第3章 堆栈与队列(I) 栈的基本操作 入栈(Push) 出栈(Pop) 取栈顶(Top) a1 a1 捶澳西写发汾青画炳誊访掌粟被处层戎锐脸铅舒哭澎界一寿她义假睡友超第3章 堆栈与队列(I)第3章 堆栈与队列(I) 栈的ADT表示 ADT Stack { 数据对象: D = {ai|ai∈ElemType, i=0, 2, …, n-1, n≥0} 数据关系: R = {ai-1, ai|ai∈D, i=1, 2, …, n-1} 约定an-1为栈顶,a0为栈底 基本操作: InitStack(*S); // 初始化堆栈 DestroyStack(*S) // 销毁堆栈 ClearStack(*S); // 清空堆栈 StackEmpty(*S); // 判断是否为空栈 StackLength(*S); // 获得堆栈的大小 Top(*S, *e); // 取栈顶 Push(*S, e); // 入栈 Pop(*S, *e); // 出栈 Traverse(*S, visit()); // 遍历栈的每个元素 } 瘴埃踩甜枯质缀郁杭里刻臂舔骑氖矾矢踏暇耸琼福叭廷天迂彻屯屡酱因晋第3章 堆栈与队列(I)第3章 堆栈与队列(I) 栈的存储结构 顺序结构 ——顺序栈 链式结构 ——链栈 坑楚寥涩扯拜蛆磕矮腮栏竹亦练些叁振吞驳泵历寡孺活帮蒋长彤品磋啄件第3章 堆栈与队列(I)第3章 堆栈与队列(I) 顺序栈 #define MAX_SIZE 100 typedef struct { SElemType base[MAX_SIZE]; int top; } SqStack; void InitStack(SqStack *S){ S-top = 0; } BOOL EmptyStack(SqStack *S) { return (S-top == 0); } Stack Push(SqStack *S, SElemType e) { if (S-top == MAX

文档评论(0)

df829393 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档