回顾线性表顺序表sqlist(elem,length,listsize)随机存取.pptVIP

回顾线性表顺序表sqlist(elem,length,listsize)随机存取.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
回顾线性表顺序表sqlist(elem,length,listsize)随机存取.ppt

回顾线性表 顺序表sqList(elem,length,listsize) 随机存取 查找(含修改)操作O(1),与位置无关 插入、删除操作O(n),与位置成反比 单链表LinkList(data,next) 非随机存取 查找操作O(n),与位置成正比 修改、插入、删除操作O(1),与位置无关(结点位置已确定为前提) 单链表的应用 P39页一元多项式的表示及相加 将第2次作业中“学员信息管理”小程序的实现。 现库存情况 1000元 10台 1500元 5台 2000元 2台 进货 1500元 2台 3000元 5台 算法设计过程 结点类型定义struct LNode 建立库存表status CreateLink(L) 进货status AddNew(L, e) 查看库存status LookList(L) 出货status Edit(L,e,count) 注意1:建立库存表时与书中初始化空表不同的是可以将已有产品信息连续输入进去。 注意2:进货操作时要能允许连续输入多个产品信息。 第3章 栈和队列 本章学习“栈”和“队列” 仍属线性表 是特殊的线性表 是操作受限的线性表 3.1 栈 学习要点 理解并掌握栈的结构特征和操作特点; 掌握栈的顺序存储结构,以及如何用C语言描述它的类型定义; 重点掌握顺序存储结构栈的基本操作的算法; 理解栈的后进先出的特点及在程序设计中的应用。 引例:火车编组 其他实例 一摞书 刷盘子 函数嵌套与递归调用 3.1.1 抽象数据类型-栈的定义 栈(Stack):限定仅在表尾进行插入或删除操作的线性表。 -表尾端称为“栈顶” -表头端称为“栈底”。 概念强化练习 按栈结构要求,设有输入序列ABC,可能的输出序列有哪些?(注:入栈的过程中允许出栈,但每一个元素入栈和出栈的次数只能各一次。) 栈状态 产生式 A进 A出 B进 B出 C进 C出 ABC A进 A出 B进 C进 C出 B出 ACB A进 B进 B出 A出 C进 C出 BAC A进 B进 B出 C进 C出 A出 BCA A进 B进 C进 C出 B出 A出 CBA 不可能出现的序列为: CAB 补充公式: 若输入的序列为1、2、3 ….n,则可能出现的输出序列符合卡塔南数列: ADT Stack {数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≧0} 数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n} 基本操作:(部分常用) InitStack(S) 构造空栈 StackEmpty(S) 判栈空 GetTop(S,e) 取栈顶元素 Push(S,e) 进栈 Pop(S,e) 出栈 }ADT Stack 3.1.2 栈的表示和实现 两种存储表示方法:顺序栈和链栈 1.顺序栈 3+2个要素: -top 栈顶指针 -base 栈底指针 -stacksize 栈的(当前)容量 -STACK_INIT_SIZE 初始分配量 -STACKINCREMENT 分配增量 顺序栈结构定义 Typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; 顺序栈的主要算法 构造空栈 Status InitStack(SqStack S) { S.base=(SElemType *) malloc (STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit (OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; } 学习实现算法前请回答以下问题: 如何表示栈满? 如何表示栈空? 如何取得栈顶元素的值? 入栈操作时栈结构定义中的哪个或哪些分量改变了? 出栈时栈结构定义中的哪个或哪些分量改变了? 取栈顶元素(注意:不是出栈) Status GetTop(SqStack S,SElemType e) { if(S.top==S.base) return ERROR; e=*(S.top-1); return OK; } 进栈 Status Push(SqStack S,SElemType e) { if(S.top-S.base=S.stacksize) { S.base=(SElemType *)realloc(S.base,(S.stacksize

您可能关注的文档

文档评论(0)

189****0315 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档