清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 链表

鹑三掌變薆 单链表( Singly Linked List 循环链表( Circular list 多项式及其相加 双向链表(Doub/ Linked list 稀疏矩阵
单链表 (Singly Linked List) 循环链表 (Circular List) 多项式及其相加 双向链表 (Doubly Linked List) 稀疏矩阵

单链表( Singly linked List) 特点 每个元素(表项由结点(Node)构成。 element 线性结构 first l0 02 03 last 0结点可以不连续存储 0表可扩充
单链表 (Singly Linked List) 特点 每个元素(表项)由结点(Node)构成。 线性结构 结点可以不连续存储 表可扩充

单链表的存储映像 (a)可用存储空间 ree C0 1 3 first ree b)经过一段运行后的单链表结构st
单链表的存储映像

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

class Lists )合类定义 class Listnode i ∥链表结点类 friend class list;1表类为其友元类 rivate int data '结点数据,型 Listnode ilink 结点指针 class list ∥/链表类 publica ∥表公共操作 private Listnode*frst,ast;表头和表尾指针
class List; //复合类定义 class ListNode { //链表结点类 friend class List; //链表类为其友元类 private: int data; //结点数据, 整型 ListNode *link; //结点指针 }; class List { //链表类 public: //链表公共操作 ……… private: ListNode *first, *last; //表头和表尾指针 };

class list{∥表类定义(嵌套方式) public. 链表操作 p rivate class listnode{∥l套链表结点类 publico int data Listnode links Listnode*rst2*lat;表头和表尾指针
class List { //链表类定义(嵌套方式) public: //链表操作 ……… private: class ListNode { //嵌套链表结点类 public: int data; ListNode *link; }; ListNode *first, *last; //表头和表尾指针 };

单链表中的插入与删除 插入 第一种情况:在第一个结点前插入 newnode-link=first first=newnode; newnode newnode x first (插入前) (插入后)
单链表中的插入与删除 插入 第一种情况:在第一个结点前插入 newnode→link = first ; first = newnode; (插入前) (插入后)

第二种情况:在链表中间插入 newnode-link=p→link p-link= newnode newnan neun x x 插入前) 插入后)
(插入前) (插入后) 第二种情况:在链表中间插入 newnode→link = p→link; p→link = newnode;

第三种情况:在链表末尾插入 newnode-link=p-link; p-link=last= newnode; neon wnoce Last last (插入前) (插入后)
第三种情况:在链表末尾插入 newnode→link = p→link; p→link = last = newnode; (插入前) (插入后)

int List: Insert( const int x, const int i)t /在链表第i个结点处插入新元素x Node p=first; int k=0; while(p !- null & ki-I {p=p→link;k++;}/找第i1个结点 if(p== null & first I = NULL)& cout <<"Invalid position for Insertation!n?: return 0 Node newnode= new Node(x, null); /创建新结点,其数据为x,指针为0
int List::Insert ( const int x, const int i ) { //在链表第 i 个结点处插入新元素 x Node *p = first; int k = 0; while ( p != NULL && k< i -1 ) { p = p→link; k++; } //找第i-1个结点 if ( p == NULL && first != NULL ) { cout << “Invalid position for Insertation!\n”; return 0; } Node *newnode= new Node(x, NULL); //创建新结点,其数据为x,指针为0
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 数組.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第十章 搜象与散列.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)上机实验一进程控制与描述.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第九章 虚拟存储器管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第八章 实存储器管理技术.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第七章 死锁(Deadlock).ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第六章 多处理器系统和处理器管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第五章 并行性:同步和互斥.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第四章 线程.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第三章 进程管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第二章 操作系统的运行环境.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第一章 概述.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第八章 计算机维护和多媒体技术.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第七章 计算机网络与Internet.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第六章 Power Point2000.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第五章 中文 Excel2000.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第四章 文字编辑系统中文Word2000.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第三章 操作系统及使用.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第二章 键盘及汉字输入字输入.pps
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 栈与队列.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 递归.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树与森林.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 集合与拽索.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第八章 图.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 排序.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)期末总复习(各章复习).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)绪论、第一章 命题逻辑(主讲:许桂清).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第二章 谓词逻辑.ppt
- 东北大学:《离散数学》课程教学资源(试题)2001级总本.doc
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 湖南大学:《C++程序设计》目录.ppt
- 湖南大学:《C++程序设计》第10章 静态成员与友元.ppt
- 湖南大学:《C++程序设计》第11章 继承和派生类.ppt
- 湖南大学:《C++程序设计》第12章 模板.ppt
- 湖南大学:《C++程序设计》第13章 多态性与虚函数.ppt
- 湖南大学:《C++程序设计》第14章 I/O流.ppt