- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,合法的插入位置
您可能关注的文档
最近下载
- 2025年广西公需科目第二套答案.docx VIP
- 《教父3(1990)》完整中英文对照剧本.pdf VIP
- 建筑结构用钢板GBT 19879-2023.docx VIP
- 18中医养生学第十七章五脏调养.pptx VIP
- 2024年高考语文备考之现代文阅读高考真题散文6篇.docx VIP
- 2024年中国企业可持续发展报告指南(CASS-ESG 6.0)之一般框架【下(共两册)】.pdf VIP
- 企业并购动因、绩效及风险文献综述.docx VIP
- 公文写作规范.pptx VIP
- 3.大跨度大截面H型钢桁架结构的组装工法(详述)(详细).doc VIP
- 专题39 双曲线及其性质(教师版)高中数学53个题型归纳与方法技巧总结篇.pdf VIP
文档评论(0)