数3-栈队列a案例分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第三章 栈和队列 引言:对线性表 L=(a1,a2,,...,an), 可在任意第i(i=1,2,,...n,n+1)个位置插入新元素, 或删除任意第i(i=1,2,,...n)个元素 受限数据结构---- 插入和删除受限制的线性表。 1.栈(stack), 2.队列(queue), 3.双队列(deque) 3.1栈(stack) 3.1.1栈的定义和操作 1.定义和术语 ▲ 栈----限定在表尾作插入、删除操作的线性表。 (a1,a2, ...,an) ←插入元素(进栈) ↑ ↑ ↘删除元素(出栈) 表头 表尾 (栈底) (栈顶) ▲ 栈的元素的进出原则: “后进先出”,“Last In First Out”。 ▲ 栈的别名: “后进先出”表、“LIFO”表、反转存储器、地窖。 2.栈的基本操作 (1) Initstack(s)----置s为空栈。 (2) Push(s,e)----元素e进栈s。 若s已满,则发生溢出。 若不能解决溢出,重新分配空间失败,则插入失败。 (3) Pop(s,e)----删除栈s的顶元素,并送入e 。 若s为空栈,发生“下溢”(underflow); 为空栈时,表示某项任务未开始或已完成。 (4) Gettop(s,e)----栈s的顶元素拷贝到e。 若s为空栈,则结束拷贝。 (5) Empty(s)----判断s是否为空栈。 若s为空栈,则Empty(s)为true;否则为false。 3.模拟铁路调度站 讨论: 假设依次输入3个元素(车厢)A,B,C到栈(调度站)中, 可得当哪几种不同输出? (1)输入A,B,C,产生输出A,B,C的过程: (2)输入A,B,C,产生输出C,B,A的过程: (3)输入A,B,C,产生输出B,C,A的过程: 当A,B,C依次进栈,C出栈后,由于栈顶元素是B,栈底 元素是A,而A不能先于B出栈,所以不能在输出序列中, 使A 成为C的直接后继, 即不可能由输入A,B,C产生输出C,A,B。 一般地,输入序列(...,ai,...,aj,...,ak,...)到 栈中,不能得到输出序列(...,ak,...,ai,...,aj,...)。 设依次输入元素A,B,C到栈中,可得哪几种输出? 设依次输入元素C,B,A到栈中,可得哪几种输出? 讨论: 假定输入元素 A,B,C,D 到栈中,能得当哪几种输出? 不能得到哪几种输出序列? (1) A,B,C,D (7) B,A,C,D (13) C,A,B,D (19) D,B,C,A (2) A,B,D,C (8) B,A,D,C (14) C,A,D,B (20) D,B,A,C (3) A,C,B,D (9) B,C,A,D (15) C,B,A,D (21) D,C,B,A (4) A,C,D,B (10) B,C,D,A (16) C,B,D,A (22) D,C,A,B (5) A,D,B,C (11) B,D,A,C (17) C,D,A,B (23) D,A,B,C (6) A,D,C,B (12) B,D,C,A (18) C,D,B,A (24) D,A,C,B 共5+5+3+1=14种 3.1.2 栈的存储表示和操作实现 1.顺序栈----用顺序空间表示的栈。 假设栈空间为s[1..maxleng] (1)顶指针指向顶元素所在位置: (2)顶指针指向顶元素所在位置的下一个空位置 设栈空间为s[1..maxleng]: (2)顶指针指向顶元素所在位置的下一个空位置 设栈空间为s[1..maxleng]: 2.顺序栈的描述,进栈、出栈算法 (1)栈的元素空间s与顶指针top分别定义 a) s和top的分别定义 #define maxleng 100 Elemtype s[maxleng+1]; int st=0,*top=st;//初始化 b) 进栈算法 void push_s(Elemtype s[ ],int *top,Elemtype e) //将元素e压入栈s中,(*top)指向顶元素 { if ((*top)==maxleng) e

文档评论(0)

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

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

1亿VIP精品文档

相关文档