数据结构-线性表讲解.pptx

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

;2 线性表;2.1 线性表的逻辑结构;a1,a2,…ai-1都是ai(2≦i≦n)的前驱,其中ai-1是ai的直接前驱; ai+1,ai+2,…an都是ai(1≦i ≦n-1)的后继,其中ai+1是ai的直接后继。;2.1.2 线性表的逻辑结构;2.1.3 线性表的抽象数据类型定义;2.1.3 线性表的抽象数据类型定义;2.1.3 线性表的抽象数据类型定义;2.2 线性表的顺序存储; 在具体的机器环境下:设线性表的每个元素需占用L个存储单元,以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系: LOC(ai+1)=LOC(ai)+L 线性表的第i个数据元素ai的存储位置为: LOC(ai)=LOC(a1)+(i-1)*L;2.2 线性表的顺序存储;2.2.2 顺序表的基本操作;补充;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.2.2 顺序表的基本操作;2.3 线性表的链式存储;为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其直接后继结点的地址(或位置),称为指针(pointer)或链(link),这两部分组成了链表中的结点结构,如图2-2所示。 链表是通过每个结点的指针域将线性表的n个结点按其逻辑次序链接在一起的。 每一个结只包含一个指针域的链表,称为单链表。 为操作方便,总是在链表的第一个结点之前附设一个头结点(头指针)head指向第一结点。头结点的数据域可以不存储任何信息(或链表长度等信息)。; 3695;1 结点的描述与实现 C语言中用带指针的结构体类型来描述 typedef struct Lnode { ElemType data; /*数据域,保存结点的值 */ struct Lnode *next; /*指针域*/ }LNode; /*结点的类型 */ 2 结点的实现 结点是通过动态分配和释放来的实现,即需要时分配,不需要时释放。实现时是分别使用C语言提供的标准函数:malloc() ,realloc(),sizeof() ,free() 。;补充;补充;补充;动态分配 p=(LNode*)malloc(sizeof(LNode)); 函数malloc分配了一个类型为LNode的结点变量的空间,并将其首???址放入指针变量p中。 动态释放 free(p) ; 系统回收由指针变量p所指向的内存区。P必须是最近一次调用malloc函数时的返回值。;2.3 线性表的链式存储;⑵ 常见的指针操作;⑤ q-next=p-next ;;2.3.2 单线性链式的基本操作;算法描述 LNode *create_LinkList(void) /* 头插入法创建单链表,链表的头结点head作为返回值 */ { int data ; LNode *head, *p; head= (LNode *) malloc( sizeof(LNode)); head-next=NULL; /* 创建链表的表头结点head */ while (1) { scanf(“%d”, data) ; if (data==32767) break ; p= (LNode *)malloc(sizeof(LNode)); p–data=data; /* 数据域赋值 */ p–next=head–next ; head–next=p ; /* 钩链,新创建的结点总是作为第一个结点 */ } return (head); } ;(2) 尾插入法建表 头插入法建立链表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。若希望二者次序一致,可采用尾插法建表。该方法是将新结点插入到当前链表的表尾,使其成为当前链表的尾结点。;2.3.2 单线性链式的基本操作;2.3.2 单线性链式的基本操作;2.3.2 单线性链式的基本操作;;2.3.2 单线性链式的基本操作;2.3.2 单线性链式的基本操作;2.3.2 单线性链式的基本操作;设链表的长度为n,合法的插入位置

文档评论(0)

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

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

1亿VIP精品文档

相关文档