计算09赵威.ppt

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

第二章 线性表 本章基本内容: 线性表的逻辑结构定义和各种存储结构的描述方法, 在线性表的两类存储结构上如何实现基本运算。 学习要点: 1、了解线性表的逻辑结构特性是数据元素之间存在着 线性关系,在计算机中表示这种关系的不同方法 得到两类不同的存储结构。 2、熟练掌握这两类存储结构的描述方法,以及循环链表、 双向链表的特点等。 3、熟练掌握顺序表、线性链表实现的基本操作:如插入、删除等算法。 §2.1 线性表概念及基本操作 §2.2 线性表的顺序存储和实现 §2.3 线性表的链式存储和实现 2.3.1 线性链表 2.3.2 循环链表 2.3.3 双向链表 §2.1 线性表的概念 一、线性表的逻辑结构 线性表是n 个类型相同数据元素的有限序列, 通常记作(a1, a2, a3, …, an )。 例1、数学中的数列(11,13,15,17,19,21) 例2、英文字母表(A, B, C, D, E? Z )。 例3、某单位的电话号码簿。 §2.2 线性表的顺序存储和实现 一、线性表的顺序存储结构——顺序表 1、线性表的顺序存储结构 2、顺序表的类型定义 二、顺序表的基本操作算法 三、利用基本操作实现线性表的其他操作 改写算法2.3为C语言: main( ) {SqList *Lp; Lp=(Sqlist *)malloc(sizeof(SqList)); InitList_Sq(Lp); …… } InitList_Sq(SqList *L) { L-elem =(int *)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L-elem)exit(OVERFLOW); L-Length = 0; L-Listsize = LIST_INIT_SIZE; return OK; } §2.3 线性表的链式存储和实现 §2.3.1 线性链表 单链表插入操作 线性链表小结 §2.3.2 循环链表 §2.3.3 双向链表 第二章 线性表小结 内容: 顺序存储结构——顺序表 链式存储结构——线性链表、循环链表、双向链表 掌握: 在这两种存储结构下如何实现线性表的基本操作。 目标: 通过数据结构课程的学习,很好地理解各种存储结构是如何存储和表达数据对象的有关信息,以及各种存储结构下操作的特点。 取元素操作算法: Status GetElem_L(LinkList L, int i, ElemType e){ //L为带头结点的单链表的头指针。 //当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR p=L-next; j=1; //初始化,p指向首元结点,j为计数器 while(p ji){ //顺指针向后查找,直到p指向第i个元素或p为空 p=p-next; ++j; } if (!p||ji) return ERROR; //第i个元素不存在 e = p-data; //取第i个元素 return OK; } //GetElem_L 算法 2.8 3、插入操作 ListInsert_L(LinkList L, int i, ElemType e) 功能:在线性链表L的第i个元素结点之前插入一个新元素结点; 插入操作图示: 插入前 插入后 ai-1 ai a2 a1 ai+1 n an L ai-1 ai a2 a1 ai+1 n an e L a b H d c d c c d c d 插入操作主要步骤: 1)查找链表L的第 i-1个元素结点; 2)为新元素建立结点; 3)修改第 i-1个元素结点的指针和新元素结点指针完成插入; 插入操作算法: Status ListInsert_L(LinkList L, int i, ElemType e){ //在带头结点的线性链表L中第i个元素结点之前插入元素e p=L; j=0 while (p ji-1){p = p-next; ++j;} //寻找第i-1个元素结点 if(!p||jj-1) return ERROR; // i小于1或者大于表长 s=(LinkList) malloc (sizeof(LNode)

文档评论(0)

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

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

1亿VIP精品文档

相关文档