清华大学:《数据结构》课程电子教案(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
- 清华大学电子工程系:《微机原理》第四次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第六次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第八次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第五次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第二次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第三次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第七次作业参考答案.doc
- 清华大学电子工程系:《微机原理》第一周作业参考.doc
- 清华大学电子工程系:《微机原理》汇编程序设计实验报告一.doc
- 清华大学电子工程系:《微机原理》自测试题参考答案.doc
- 清华大学电子工程系:《微机原理》期中自测试题.doc
- 清华大学电子工程系:《微机原理》第八章 总线 8.1 概述 8.2 ISA总线 8.3 PCI总线.ppt
- 清华大学电子工程系:《微机原理》第七章 输入/输出接口 7.6 DMA控制器8237 7.7 D/A和A/D转换技术.ppt
- 清华大学电子工程系:《微机原理》第七章 输入/输出接口 7.4串行通讯和串行接口 7.5 并行接口.ppt
- 清华大学电子工程系:《微机原理》第八章 中断与中断控制 8.1 中断的基本概念 8.2 可编程中断控制器8259 8.3 中断服务程序的编程 8.4 保护模式的中断处理.ppt
- 清华大学电子工程系:《微机原理》第七章 输入输出接口 7.1概述 7.2CPU与外设数据传送的方式 7.3可编程计数器/定时器8253.ppt
- 清华大学电子工程系:《微机原理》第六章 存储器系统.ppt
- 清华大学电子工程系:《微机原理》第五章 Pentium微处理器的硬件接口.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第四章 栈与队列.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第五章 递归.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第六章 树与森林.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第七章 集合与搜索.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第八章 图.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第九章 排序.ppt
- 清华大学:《数据结构》课程电子教案(PPT课件讲稿)第十章 搜索与散列.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)第一章 概述.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)双向循环链表.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)数据结构讲义.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)第四章 栈和队列.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)第六章 树和森林.ppt
- 清华大学:《数据结构及其应用》课程教学资源(PPT课件讲稿)第五章 递归(Recurve)_递归.ppt
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题1.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题2.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题3.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题4.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题5.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题6.doc
- 清华大学:《数据结构及其应用》课程教学资源(试卷习题)试题8.doc