- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数 据 结 构 Data Structure 主讲人: 刘 玮 第二章 线性表 2.1 线性表的定义 2.1 线性表的定义 2.1 线性表的定义 2.1 线性表的定义 2.1 线性表的定义 2.1 线性表的定义 2.1 线性表的定义 2.2 线性表的顺序表示和实现 2.2 线性表的顺序表示和实现 2.2 线性表的顺序表示和实现 2.2 线性表的顺序表示和实现 2.2 线性表的顺序表示和实现 算法复杂度分析 时间主要耗费在移动元素上, 移动元素个数与插入位置 i 有关,问题规模为n=L.length 最好:当 i=n+1, 结点后移语句不执行,T(n)=O(1) 最坏:当 i=1, 结点后移语句执行n次,T(n)=O(n) T(n)=O(n) 算法复杂度分析 时间主要耗费在移动元素上, 移动元素个数与删除位置 i 有问题规模:n=L.length 最好:当 i=n, 结点前移语句不执行,T(n)=O(1) 最坏:当 i=1, 结点前移语句执行n次,T(n)=O(n) 平均: T(n)=O(n) 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.3 线性表的链式表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示及相加 2.4 一元多项式的表示及相加 2.4 一元多项式的表示及相加 2.4 一元多项式的表示及相加 本章小结 理解线性表的定义及逻辑特点 掌握线性表的存储结构 存储特点﹑类型定义 顺序表、单链表及其基本算法(查找、插入、删除等)。 ? 了解单向循环链表、双向循环链表、静态链表、一元多项式的表示 思考题 编写一个函数,从一个向量A中删除元素值在x到y(x≤y)之间的所有元素,考虑算法高效问题。 编写程序,从单链表中删除一个结点(不带头结点)。比较带头结点单链表结点删除程序,思考加入头结点的作用? 用循环链表编写约瑟夫环问题的算法程序。 2.3.1.1 特点 单链表中每个结点的结构为: 单链表的简化示意图如下,设单链表L= (a1,a2,a3 ,a4) 结点可以不连续存储 表容易扩充 单链表是非随机存储结构 单链表的存储映像 (a) 未使用的存储空间 (b) 建立单链表后的存储空间 2.3.1.2 带头结点的单链表 在实际应用中,往往在第一个结点前设置一个头结点。该结点的数值域可自行定义,指针域指向第一个结点。 设置表头结点的目的是统一空表与非空表的操作,简化链表操作的实现。 (b)空表 (a)非空表 2.3.1.3 单链表的表示(C语言描述) typedef struct Lnode { ElemType data; //数据域 Struct Lnode *next; //指针域 }Lnode, *LinkList; LinkList L; L-next L-next-data 2.3.1.4 单链表基本操作的实现 1. 插入结点操作 2. 删除结点操作 3. 建立单链表 1. 插入结点操作 在第i个结点前插入新元素x (a) 插入前 (b) 插入后 插入算法:(在第i个位置前插入元素) 生成结点x ; x的指针指向第i个结点; 第i-1个结点的指针指向x; Status ListInsert (LinkList L, int i, Elemtype x ) { p=L; j=0; while ( p != NULL j i -1 ) { p = p→next; j++; } //找第 i-1个结点 if ( p == NULL || ji-1 ) return Error; newnode= (LinkList ) malloc(sizeof(Lnode)); //创建新结点,其数据为x newnode→data=x; newnode→next = p→next; p→next = newnode; return Ok; } 算法复杂度 :T(n) =O(n) 2. 删除结点操作 删除表中第i个结点 (a) 删除前 (b) 删除后 删除算法:(删除表中第i个结点) 让第i-1的指针直接指向第i+1; 释放第i个结点所分配的资源; q Status ListDelete (LinkList L, int I,ElemType e ) { p =L;
您可能关注的文档
最近下载
- Office办公软件应用案例教程--电子教案.docx VIP
- 部编版语文六年级上册第一单元教学设计含习作园地一.pdf VIP
- 《闪亮的坐标—劳模王进喜》课件 2024-2025学年高教版(2023)中职语文职业模块_47498966.pptx VIP
- 上海正夕CL2800余氯分析仪使用说明书.pdf VIP
- 牛油果种植管理技术.pdf VIP
- AI驱动光接入网技术白皮书(2025版).docx
- JT∕T 200-2020 汽车客运站级别划分和建设要求(可复制版).pdf
- 完整版铁路工程实施性施工组织设计方案22.docx
- 飞行_载重平衡管理手册.pdf
- 第4章 PyTorch深度学习框架.pptx VIP
文档评论(0)