清华大学:《C++数据结构》第三章 链表

第三章链表 单链表 多项式及相加 双向链表 稀疏矩阵
◼ 单链表 ◼ 循环链表 ◼ 多项式及其相加 ◼ 双向链表 ◼ 稀疏矩阵

单链表( Singly Linked List) 特点 ◆每个元素表项由结点(Noe)构成。 data link ◆线性结构 first→a0 结点可以连续,可以不连续存储 ◆结点的逻辑顺序与物理顺序可以不一致 表可扩充
单链表 (Singly Linked List) ◼ 特点 ◆ 每个元素(表项)由结点(Node)构成。 ◆ 线性结构 ◆ 结点可以连续,可以不连续存储 ◆ 结点的逻辑顺序与物理顺序可以不一致 ◆ 表可扩充 data link first a0 a1 a2 a3 a4

单链表的存储映像 free (a)可利用存储空间 first fir ree (b)经过一段运行后的单链表结构
单链表的存储映像 free (a) 可利用存储空间 a0 a2 a1 a3 free first (b) 经过一段运行后的单链表结构

单链表的类定义 多个类表达一个概念单链表) ◆链表结点( Listnode)类 ◆链表(List)类 ◆链表游标( Iterator)类 定义方式 ◆复合方式 ◆嵌套方式 ◆继承方式
单链表的类定义 ◼ 多个类表达一个概念(单链表)。 ◆ 链表结点(ListNode)类 ◆ 链表(List)类 ◆ 链表游标(Iterator)类 ◼ 定义方式 ◆ 复合方式 ◆ 嵌套方式 ◆ 继承方式

class list. ∥1表类定义(复合方式) class ListNode i ∥链表结点类 friend class lists ∥链表类为其友元类 p rivate. int data; ∥/结点数据,整型 Listnode x link /结点指针 class list i ∥/链表类 privates Listnode*frst,*1ast;/表头指针
class List; //链表类定义(复合方式) class ListNode { //链表结点类 friend class List; //链表类为其友元类 private: int data; //结点数据, 整型 ListNode * link; //结点指针 }; class List { //链表类 private: ListNode *first , *last; //表头指针 };

class list 链表类定义(嵌套方式) private. class ListNode i ∥套链表结点类 public int data Listnode link. Listnode*frst,料last;/表头指针 public ∥链表操作
class List { //链表类定义(嵌套方式) private: class ListNode { //嵌套链表结点类 public: int data; ListNode *link; }; ListNode *first , *last; //表头指针 public: //链表操作……… };

链表类和链表结点类定义(继承方式) class listnode i ∥链表结点类 p rotected int data: Listnode class list: public class ListNode i ∥/链表类,继承链表结点类的数据和操作 privates Listnode*frst,*1ast;/表头指针
链表类和链表结点类定义(继承方式) class ListNode { //链表结点类 protected: int data; ListNode * link; }; class List : public class ListNode { //链表类, 继承链表结点类的数据和操作 private: ListNode *first , *last; //表头指针 };

单链表中的插入与删除 插入 ◆第一种情况:在第一个结点前插入 newnode->link= first i first= newnode; newnode newnode first first 十一_ (插入前) (插入后)
单链表中的插入与删除 ◼ 插入 ◆ 第一种情况:在第一个结点前插入 newnode->link = first ; first = newnode; (插入前) (插入后) first newnode newnode first

第二种情况:在链表中间插入 newnode->link=p->link p->ink= newnode newnode-L newnode p (插入前) (插入后)
(插入前) (插入后) ◆ 第二种情况:在链表中间插入 newnode->link = p->link; p->link = newnode; newnode p newnode p

。第三种情况:在链表末尾插入 newnode->link= p->link; p->link= newnode i newnode→ newnode-入 p (插入前) (插入后)
◆ 第三种情况:在链表末尾插入 newnode->link = p->link; p->link = newnode; (插入前) (插入后) newnode newnode p p
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《C++数据结构》第二章 数组.ppt
- 清华大学:《C++数据结构》第一章 绪论.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)AfxPrint.rtf
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)AfxCore.rtf
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第9章 多线程.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第8章 异常处理和诊断.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第7章 MFC通用类.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第6章 文件操作.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第5章 图形操作.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第4章 菜单、快捷键和控制条.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第3章 对话框与控件.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第2章 文档和视.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)目录.ppt
- 《工程CAD2004》AUTOCAD2004教程PPT电子课件.ppt
- 《计算机二级公共基础知识》课程教学资源(教材电子书,WORD版,含习题与答案).doc
- 《AutoCAD中文版辅助教程》第9课 创建与编辑文本内容.ppt
- 《AutoCAD中文版辅助教程》第8课 图案填充与查询.ppt
- 《AutoCAD中文版辅助教程》第7课 图块、属性和外部参照.ppt
- 《AutoCAD中文版辅助教程》第6课 图层管理.ppt
- 《AutoCAD中文版辅助教程》第5课 平面图形的高级编辑.ppt
- 清华大学:《C++数据结构》第四章 栈和队列.ppt
- 清华大学:《C++数据结构》第五章 递归与广义表.ppt
- 清华大学:《C++数据结构》第六章 树与森林.ppt
- 清华大学:《C++数据结构》第七章 集合与搜索.ppt
- 清华大学:《C++数据结构》第八章 图.ppt
- 清华大学:《C++数据结构》第九章 排序.ppt
- 清华大学:《C++数据结构》第十章 索引与散列.ppt
- 《Visual Basic语言程序设计》第10章 菜单程序设计.ppt
- 《Visual Basic语言程序设计》第11章 文 件.ppt
- 《Visual Basic语言程序设计》第12章 界面设计.ppt
- 《Visual Basic语言程序设计》第13章 Visual Basic与数据库.ppt
- 《Visual Basic语言程序设计》第14章 对象的链接与嵌入.ppt
- 《Visual Basic语言程序设计》第15章 多媒体.ppt
- 《Visual Basic语言程序设计》第16章 常用ActiveX控件.ppt
- 《Visual Basic语言程序设计》第1章 Visual Basic概述.ppt
- 《Visual Basic语言程序设计》第2章 VB基本概念与操作.ppt
- 《Visual Basic语言程序设计》第3章 VB程序设计的基础(一).ppt
- 《Visual Basic语言程序设计》第3章 VB程序设计的基础(二).ppt
- 《Visual Basic语言程序设计》第4章 数据的输出与输入.ppt
- 《Visual Basic语言程序设计》第5章 VB程序设计语句.ppt