- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第5章链表与list类2025/6/171链表的特点创建链表遍历链表查询与相等添加节点删除节点 更新节点子链表链表的排序合并、倒置和交换链表编写简单的链表
5.1链表的特点2025/6/172链表是由若干个节点组成,这些节点形成的逻辑结构是线性结构,节点的存储结构是链式存储,即节点的物理地址不必是依次相邻的。对于单链表,每个结点含有一个数据,并含有下一个节点的地址。对于双链表,每个节点含有一个数据,并含有上一个节点的地址和下一个结点的地址(C++实现的是双链表)
2025/6/1735.1链表的特点图示意的是有5个节点的双链表(省略了上一个节点的地址箭头示意)。注意,链表的节点序号是从0开始,每个节点的序号等于它前面的节点的个数。链表中的节点的物理地址不必是相邻的,因此,链表的优点是不需要占用一块连续的内存存储空间。
2025/6/1745.1链表的特点?●删除头、尾节点的复杂度O(1)删除前面所示意5个节点的的链表的头节点(大象-节点)后的示意图。
2025/6/1755.1链表的特点?●查询头、尾节点的复杂度O(1)查询狮子和鳄鱼的时间复杂度都是O(1)。
2025/6/1765.1链表的特点?●添加头尾节点的复杂度O(1)要给图5.1所示意的链表的添加新的尾节点(企鹅-节点),根据双链表保存的尾节点的地址,找到尾节点(鳄鱼-节点),将这个尾节点中的下一个节点的引用设置成新添加的节点(企鹅-节点)的地址,将添加的新节点(企鹅-节点)中的上一个节点的地址设置成鳄鱼-节点的地址,将添加的新节点(企鹅-节点)中的下一个节点的地址设置成null,即让新添加的节点成为尾结点。
2025/6/1775.1链表的特点●查询中间节点的时间复杂度O(n)链表的节点的物理地址不是相邻的,节点通过互相保存地址链接在一起。?
2025/6/1785.1链表的特点●删除中间节点的复杂度O(n)链表的节点的物理地址不是相邻的,节点通过互相保存地址链接在一起。?
2025/6/1795.1链表的特点●插入中间节点的复杂度O(n)?插入新节点后,新链表中的节点序号按新的链表长度从0开始排列。
2025/6/17105.1链表的特点●插入中间节点的复杂度O(n)图5.1的链表中插入新的第2个节点(羚羊-节点)
5.2创建链表2025/6/1711std::list是C++标准模板库(StandardTemplateLibrary,STL)中的模板类,用于实现双向链表数据结构(也称链表是STL的容器之一)。它提供了在链表中插入、删除和访问节点的功能。需要注意,当std使用作用域运算符(也称解析运算符))“::”访问list时不要误写为str::List,即不可以将list的首写字母写成大写的L。称std::list类的实例(对象)为链表,其中的节点的逻辑结构是线性结构,节点的存储结构是链式存储。
2025/6/17125.2创建链表ch5_1.cpp使用std::list类创建链表时,必须要指定模板类中的参数类型的具体类型,类型是可以是C++允许的数据类型。1.创建空链表或具有初始节点的链表std::listintlistInt;//空链表std::liststd::stringlistStr;//空链表2.用已有链表创建链表也可以用已有的数据类型相同的链表,例如用listStr链表中的节点创建一个新的链表listNew:std::liststd::stringlistNew(listStr);链表listNew的节点中的数据和listStr的相同。如果链表listNew修改了节点中的数据,不会影响listStr节点中的数据,同样,如果链表listStr修改了节点中的数据,也不会影响listNew节点中的数据。例1创建链表
2025/6/17135.2创建链表?std::list是一个双向链表,它的节点是通过内部类std::list::Node来表示的(用户程序不能直接使用这个内部类)。当链表使用push_back()函数时,链表会自动用Node创建节点、节点包含了存储的数据以及指向前一个节点和后一个节点的指针。
5.3遍历链表2025/6/1714无论何种集合,应当允许用户以某种函数遍历集合中的数据,而不需要知道这些数据在集合中是如何表示及存储的,C++为各种数据结构的集合,比如链表、散列表等不同存储结构的集合都提供了迭代器。链表的存储结构不是顺序结构,因此C++没有为链表提供诸如get(intindex)或at(intindex)等函数来返回当前链表中第index节点中的数据。当用户需要遍历链表中的节点时,应当使用该链表提供的迭代器,而不是让链表本身来遍历其中的节点。
2025/6/17155.3遍历链表1迭代器在
您可能关注的文档
最近下载
- 2022年北京市十二中初三(上)期中数学试卷及答案.pdf VIP
- 鲁教版初中九年级化学各章节知识点归纳复习提纲.doc
- 海鲜市场项目可行性研究幻灯片.pptx VIP
- 微电网能量管理:技术、策略与发展路径探究.docx VIP
- 某污水处理工艺设备安装施工方案.docx VIP
- 理智与情感:爱情的心理文化之旅 智慧树网课章节测试答案.docx VIP
- 03.1 20CS03-1 一体化预制泵站选用与安装(一).docx VIP
- 2025年公司组织架构图及各部门职能要求模板参考(架构图可编辑).pdf VIP
- 级配碎石施工技术课件.ppt VIP
- 神话传说故事与中国文化 智慧树 知到答案.docx VIP
文档评论(0)