第4课--栈结构.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4课--栈结构

* * 1.表达式运算规则分析 假定四则运算表达式中允许出现的运算符有 +、-、*、/、( ),且基本的运算规则是: (1)??? 先做括号内的运算,即括号的优先级最高; (2)??? 先乘除、后加减,即 */ 运算高于+、- 运算; (3) 相同级别的运算(同为加减类或乘除类)按从左向右规则进行。 3.2.2 栈的应用—表达式求值问题 * * 第3章 栈结构 教学目的:掌握栈结构的特点,了解栈的应用 教学重点:顺序栈的实现 * * 3.1.1 栈的定义及逻辑特性 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。其中表尾称为栈顶(top),表头则称为栈底(bottom)。 将插入元素的操作称为入栈(push),删除元素的操作称为出栈(pop)。 由于限定插入或删除操作仅在栈顶进行,因此,元素的出栈顺序与入栈顺序相反,最先入栈的元素最后出栈。因此栈又称为后进先出(Last In First Out,简写为LIFO)的线性表. 3.1 栈的定义和基本操作 * * 栈顶 栈底 (b)栈示意图 ann akn-1 ? a22 a11 * * 2.栈的基本运算 初始化栈InitStack(S) 设置一个空栈S。 销毁栈 DestroyStack(S); 释放栈s所占的存储空间 入栈Push(S,x) 将元素x插入栈S中,使x成为栈S的栈顶元素。 出栈Pop(S,x) 当栈S不空时,由x返回栈顶元素,并从栈中删除栈顶元素 取栈顶元素GetTop(S,x) 若栈S不空,则由x返回栈顶元素(栈指针不变)。 判栈空Empty(S) 判断栈S是否为空栈。 * * 顺序栈的静态实现: # define StackSize 100 /*栈空间大小 */ /*顺序栈的结构类型定义*/ typedef struct { Datatype data[Stacksize]; /*栈空间 */ int top; /*栈顶“指针” */ } SeqStack; 根据以上定义写出实现基本操作的代码: 约定:top指向新元素要入栈的位置 因此空栈 top=0; //栈底base隐含为0 //初始化空栈: Status InitStack(SeqStack s) { s.top=0; } 调用方式: SeqStack s; InitStack(s); 若约定:top指向当前栈顶元素的位置 因此空栈 top= -1; //入栈:将元素e插入栈S中 Status Push(SeqStack s,Datatype e) { if (s.top==StackSize) //栈满 return(StackOverflow); s.data[s.top++]=e; return (ok); } 约定:top指向新元素要入栈的位置 //出栈: 当栈S不空时,由x返回栈顶元素 Status Pop(SeqStack s,Datatype x) { if (s.top==0) //栈空 return (StackIsEmpty); x=s.data[--s.top]; return (ok); } 约定:top指向新元素要入栈的位置 //返回栈顶元素的值,栈指针不改变 Status GetTop(SeqStack s,Datatype x) { if (s.top==0) //栈空 return (StackIsEmpty); x=s.data[s.top-1]; return (ok); } 约定:top指向新元素要入栈的位置 * * 所谓动态栈是指先分配一个基本的栈空间,运行中栈空间满时再追加存储空间。因此动态栈的实现需要动态存储分配函数支持 具有动态特点的顺序栈定义如下: # define StackInitSize 100 /* 初始栈空间 */ # define Increment 10 /* 存储分配增量值 */ /*栈的结构类型定义*/ typedef struct { Dataty

文档评论(0)

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

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

1亿VIP精品文档

相关文档