网站大量收购独家精品文档,联系QQ:2885784924

[工学]《数据结构》课件C语言 第03章.ppt

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

4、队列 ? 队列的逻辑结构 ? 队列的抽象数据类型 ? 链队列——队列的链式存储结构 ? 循环队列——队列的顺序存储结构 ? 队列的应用举例:离散事件模拟 ? 栈的定义 定义 : 栈(Stack)是限定仅在表的一端进行插入或删除操作的线性表。 在栈中能进行插入和删除的一端称为栈顶(top),相应地另一固定端称为栈底(bottom)。将一个元素放入栈中的操作叫做进栈或压栈,从栈顶取出一个元素的操作叫做出栈或弹出。不含元素的空表称为空栈。 栈的存取操作符合后进先出(Last In First Out, LIFO)或先进后出(First In Last Out, FILO)故栈又称为后进先出线性表,简称LIFO结构。 ? 栈的抽象数据类型定义 栈是一种强限制的数据类型。在栈上仅能在特定的一个位置上定义有限几种操作。 Specification ADT Stack Elements:所涉及对象的数据类型明显地取决于应用,故数据元素 可以是各种类型的,只要同属一个数据类型即可。 Structure:数据元素之间呈线性关系。假设栈中有n个数据元素 (a1,a2,···,an),则对每一个元素ai(i=1,2,···,n-1),都存在关系 ai,ai+1,并且a1无前驱,an无后继。但是,栈是一种受 限的线性结构,该结构使后进栈的元素先出栈。 Operation:栈通常包含下面的基本操作,这些操作中除 了InitStack之外,都要求栈S已存在。 ? 栈的简单应用示例 例3-1 输入字符串。用‘# ’表示退格符,即它使前一个字符无效;用‘ @ ’表示退行符,以表示此前整行字符均无效。编写行输入处理过程,内设一个栈来逐行处理从终端输入的字符串。每次从终端接收一个字符后先作如下判别:如果它既不是退格符也不是退行符,则将该字符插入栈顶;如果是一个退格符,则从栈顶删去一个字符;如果它是一个退行符,就把字符域清为空栈。 比如,若键入 BGE##EGIM#N RAD(A@??READ(A); 则实际有效的是下面两行 BEGIN ??READ(A); 顺序栈——栈的顺序存储结构 用一维数组S(1:arrmax)表示栈。 栈空:ls == NULL; 栈满:当内存分配无法实现时(堆区满); 进栈:在表头插入; 出栈:从表头删除; 即进栈、出栈操作均限制在单链表的表头端进行。 数据结构的描述 elemtype … … //任何一种数据类型 typedef struct tlkstktp{ ElemType elem; tlkstktp *Next } *lkstktp; 一个链式栈由其栈顶指针ls唯一确定。 多个链式栈可共享内存中的堆(heap)区域。 链栈为满的条件:堆区满。new(p)过程无法实现内存分配。 PushStack(lkstktp ls; elemtp x) { //算法中p为结点类型指针变量 p = new(ElemType); p-elem = x; p-next = ls; ls = p; } //push_stack elemtp PopStack(lkstktp ls) { //算法中p为结点类型指针变量 if( ls == NULL ) return NULL // e为elemtp类型变量 p = ls; ls = p-next; e = p-elem; free(p); return e; } //pop_stack 表达式的成分 操作数(Operand):常数或常数标识符、变量标识符、函数等 运算符(Operator):算术运算符、关系运算符、逻辑运算符等 界限符(Delimiter):左括号、右括号、表达式结束符等 表达式的分类 算术表达式:如 b*b - 4*a*c 关系表达式:如 b*b - 4*a*c =0 布尔表达式:如 (a0) AND (b*b - 4*a*c=0) 传统标记法——中缀标记法 特点:运算符出现在操作数之间 简单算术表达式求值算法——算符优先算法 讨论简单算术表达式的求值问题。 算符间的优先关系表 说明: 1)‘+ ’、 ‘ - ’、

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档