- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构讲义第2章 线性表 2.3 线性表的链式表示和实现 顺序表的优缺点 链表的概念 单链表 循环链表 双向链表 顺序表的优缺点 逻辑关系上相邻的两个元素在物理位置上也相邻。可以随机存取表中任意元素,它的存储位置可用一个简单、直观的公式来表示。 顺序表的优点: (1)可以方便地随机存取表中的任一结点。 (2)无须为表示结点间的逻辑关系而增加额外的存储空间; 顺序表的缺点: (1)插入和删除运算不方便,除表尾位置外,在表的其它位置上进行插入和删除操作都必须移动大量的结点; (2)由于顺序表要求占用连续的存储空间,存储分配只能预先进行(静态分配),因此当表长变化较大时,难以确定合适的存储规模。 链表的表示 特点: 用一组任意的存储单元存储线性表的数据元素 利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素 每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息 结点 数据域:元素本身信息 指针域:指示直接后继的存储位置 与链式存储有关的术语: 何谓头指针、头结点和首元结点? 例: 结构类型的C语言表示法 介绍三个有用的库函数(都在stdlib.h 中): sizeof(x)——计算变量x的长度; malloc(m) —开辟m字节长度的地址空间,并返回这段空间的首地址; free(p) ——释放指针p所指变量的存储空间,即彻底删除一个变量。 链表的实现 1. 单链表取数据元素(GetElem) 1. 单链表的插入(ListInsert) 2. 单链表的删除(ListDelete) 3. 链表的合并(MergeList) 2. 单链表的插入 3. 单链表的删除 4. 两个链表的归并(教材P31) 用链表可表示为: 算法分析: 其它链表形式 讨论2: 单链表只能查找结点的直接后继,能不能查找直接前驱?如何实现? 2.3.2 循环链表(Circular Linked List) 1. 定义:是首尾相接的链表。 2.3.3 双向链表(Double Linked List) 1. 定义:其结点有两个指针域,其一指向直接后继,其一指向直接前驱。形成的双向链表中有两条方向不同的链,称为双向链表。 双向链表的结构类型的C语言表示 双向链表结构体的C语言定义: typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next; } DuLNode, *DuLinkList; 双链表的基本操作 双链表上的运算: 求表长、查找、定位等简单运算与单链表上的算法基本相同。插入、删除有所区别。 插入、删除算法 双向链表的插入运算 Status ListInsert_DuL(DuLinkList L,int i,ElemType e){ // 在带头结点的双链循环线性表L中第i个位置之前插入元素e, // i 的合法值为1=i=表长+1 if(!(p=GetElemP_DuL(L,i))) //在L中确定第i个元素的位置指针p return ERROR; // p=NULL,即第i个元素不存在 if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))return ERROR; s-data=e; s-prior=p-prior; p-prior-next=s; s-next=p; p-prior=s; return OK; } //ListInsert_Dul 双向链表的删除运算 Status ListDelete_DuL(DuLinkList L,int i,ElemType e){ //删除带头结点的双链循环线性表L的第i个元素,i的合法值为1=i=表长 if(!(p=GetElemP_Dul(L,i))) //在L中确定第i个元素的位置指针p return ERROR; //p=NULL,即第i个元素不存在 e=p-data; p-prior-next=p-next; p-next-prior=p-prior; free(p);return OK; } //ListDelete_DuL 链表的运算效率分析 1. 查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。 2.4 一元多项式的表示及相加 一元多项式的表示 抽象数据类型定义 链表实现 一元多项式的两种线性表表示 1. 在数学上,一个一元多项式Pn(x)可按升幂写成: Pn(x)=p0+p1x+p2x2+…+pnxn 它由n+1个系数唯一确定。 2. 一般情况下的一元
您可能关注的文档
- 别把来时的梦给丢了.ppt
- 表面交线综合练习.ppt
- 低透气性煤层增透技术孙海涛.ppt
- 冰凌花执行方案0609.ppt
- 地产策划2008年5月鼎福名门世家开盘仪式活动方案45.ppt
- 地产策划鼎福名门世家开盘仪式活动方案2008年.ppt
- 地方政府课件第五章地方财政.ppt
- 丙泊酚在产科麻醉中应用的争议和进展黄绍强.ppt
- 并行窗口算法防御RSA中的计时攻击杨帆2008212160139.ppt
- 并行计算多媒体课件并行体系结构lec07SMP.ppt
- 2025年事业单位工勤技能-广东-广东地图绘制员二级(技师)历年参考题典型考点含答案解析.docx
- 2025重庆垫江县裴兴镇人民政府招聘公益岗1人备考题库附答案详解(满分必刷).docx
- 2025年中国矿山机械市场规模份额及行业前景调查分析报告.docx
- 2025年事业单位工勤技能-甘肃-甘肃信号工-机车信号设备维修一级(高级技师)历年参考题典型考点含答.docx
- 2025年教师职称-新疆-新疆教师职称(基础知识、综合素质、高中英语)历年参考题典型考点含答案解析.docx
- 2025年教师职称-山西-山西教师职称(基础知识、综合素质、初中体育与健康)历年参考题典型考点含答案.docx
- 2025年事业单位工勤技能-重庆-重庆土建施工人员二级(技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-北京-北京保健按摩师一级(高级技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-湖北-湖北中式面点师四级(中级工)历年参考题典型考点含答案解析.docx
- 2025年xx市经济运行形势状况分析调研报告.docx
原创力文档


文档评论(0)