数据结构教程 第六课 线性表的顺序表示和实现.docVIP

数据结构教程 第六课 线性表的顺序表示和实现.doc

  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文档。上传文档
查看更多
本课主题: 线性表的顺序表示和实现 教学目的: 掌握线性表的顺序表示和实现方法 教学重点: 线性表的顺序表示和实现方法 教学难点: 线性表的顺序存储的实现方法 授课内容: 复习 1、存储结构 逻辑结构 ? “数据结构”定义中的“关系”指数据间的逻辑关系,故也称数据结构为逻辑结构。 存储结构 ? 数据结构在计算机中的表示称为物理结构。又称存储结构。 顺序存储结构 链式存储结构 2、线性表的类型定义 一、线性表的顺序表示 用一组地址连续的存储单元依次存储线性表的数据元素。C语言中的数组即采用顺序存储方式。 2000:0001 2000:0003 2000:0005 2000:0007 2000:0009 2000:0011 2000:0013 2000:0015 2000:0017 ... 2000:1001 2000:1003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a[9] 1 2 3 4 5 6 7 8 9 ? ? ? 假设线性表的每个元素需占用l个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则存在如下关系: LOC(ai+1)=LOC(ai)+l LOC(ai)=LOC(a1)+(i-1)*l 式中LOC(a1)是线性表的第一个数据元素的存储位置,通常称做线性表的起始位置或基地址。常用b表示。 线性表的这种机内表示称做线性表的顺序存储结构或顺序映象。 称顺序存储结构的线性表为顺序表。顺序表的特点是以元素在计算机内物理位置相邻来表示线性表中数据元素之间的逻辑关系。 二、顺序存储结构的线性表类C语言表示: 线性表的动态分配顺序存储结构 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量以一数据元素存储长度为单位 }SqList; 三、顺序存储结构的线性表操作及C语言实现: 顺序表的插入与删除操作: 序号 数据元素 序号 数据元素 ? 序号 数据元素 序号 数据元素 1 2 3 4 5 6 7 8 9 ? ? ? 12 13 21 24 28 30 42 77 ? ? ? ? ? ? -25 ? 1 2 3 4 5 6 7 8 9 ? ? ? 12 13 21 24 25 28 30 42 77 ? ? ? ? 1 2 3 4 5 6 7 8 9 ? ? ? 12 13 21 24 28 30 42 77 ? ? ? ? ? ? -24 1 2 3 4 5 6 7 8 9 ? ? ? 12 13 21 28 30 42 77 ? ? ? ? ? 插入前n=8;插入后n=9; ? 删除前n=8;删除后n=7; 顺序表的插入算法 status ListInsert(List *L,int i,ElemType e) { struct STU *p,*q; if (i1||iL-length+1) return ERROR; q=(L-elem[i-1]); for(p=L-elem[L-length-1];p=q;--p) *(p+1)=*p; *q=e; ++L-length; return OK; }/*ListInsert Before i */ 顺序表的合并算法 void MergeList(List *La,List *Lb,List *Lc) { ElemType *pa,*pb,*pc,*pa_last,*pb_last; pa=La-elem;pb=Lb-elem; Lc-listsize = Lc-length = La-length + Lb-length; pc =

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档