数据结构chapter2线性表资料.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表(Linear lists);第2章 线性表(Linear lists) ;一、线性表的定义 ;二、线性表的抽象数据类型(ADT) ;三、线性表的基本操作 ;三、线性表的基本操作 ;三、线性表的基本操作 ;四、线性表的基本操作举例 ;2.2 线性表的顺序表示和实现;一、线性表的顺序表示;一、线性表的顺序表示;一、线性表的顺序表示; 假设动态分配的存储区域如右图所示。 如果我们用指针变量 elem 来存放首地址,由于该区域是用来存放元素的,而元素约定为ElemType类型的,所以,elem应定义为: ElemType *elem; 这样一来,位序为1的元素存放在elem[0] 中,位序为 i 的元素存放在elem[i-1]、*(elem+i-1)中.;struct SqList{ ElemType *elem; //基地址 int listsize; //当前容量(以元素为单位) int length; //当前长度 }; #define LIST_INIT_SIZE 100 //基本容量 #define LISTINCREMENT 10 //增量 ;#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct SqList{ ElemType *elem; int listsize; int length; }SqList; void main( ){ SqList L1; //此时进行插入操作是错误的; //需要对L1进行初始化操作,以便为线性表的元素分配存储区域. };二、线性表基本操作的实现算法;初始化操作的实现算法;二、线性表基本操作的实现算法;取元素操作的实现算法;二、线性表基本操作的实现算法;插入操作的实现算法;插入操作的实现算法;if(L.length=L.listsize){ newbase=(ElemType*)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof(ElemType)); If(!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; } //详见P24算法2.4;二、线性表基本操作的实现算法;删除操作的实现算法;二、线性表基本操作的实现算法;二、线性表基本操作的实现算法;例、基于顺序表的归并操作;归并操作基于顺序表的实现算法;归并操作基于顺序表的实现算法;归并操作基于顺序表的实现算法;2.3 线性表的链式表示和实现;一、线性表的链式表示;一、线性表的链式表示;一、线性表的链式表示; 有人说,只要得到了单链表的头指针L,也就获得了整个单链表。为什么呢?因为从头指针出发,可顺链到达单链表中每一结点。 由于L-next指向???结点a1,所以L-next-data等于a1,而且 L-next-next指向第二个结点a2。 一般地,若p指向第i-1个结点ai-1,则p-data= ai-1,p-next指向第i个结点ai,p-next-data等于ai,而且p-next-next指向ai+1结点,… 总之,从头指针出发,可以访问单链表中每一结点。因此,只要获得了单链表的头指针,就获得了整个单链表。 ;二、线性表基本操作的实现算法;二、线性表基本操作的实现算法;取元素操作的实现算法;取元素操作的实现算法;二、线性表基本操作的实现算法;插入操作的实现算法;二、线性表基本操作的实现算法;删除操作的实现算法;二、线性表基本操作的实现算法;归并操作基于单链表的实现算法;归并操作基于单链表的实现算法; 至此,我们讨论了初始化、获取元素、插入、删除等基本操作的实现算法。现在考虑一个问题,即怎样配合使用这些基本操作来操纵单链表呢?;下面我们结合线性表 L=(A,B,C,D) 来说明静态链表。静态链表是一个数组,每个数组元素由两个域组成:;三、静态链表;四、循环链表和双向链表;四、循环链表和双向链表;;四、循环链表和双向链表;双向链表;基于双向链表的基本操作的实现算法;插入操作的实现算法;基于双向链表的基本操作的实现算法;删除操作的实现算法;五、双向循环链表;几种链表的对比;几种链表的对比;小 结; 1) 存储结构的选取 任一一元多项式可表示为Pn(x)=P0+P1x+P2x2+...+

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档