logo资料库

C语言链表(能看得懂的)--PPT讲的确实不错.ppt

第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
资料共91页,剩余部分请下载后查看
第十一章 链表 1
结构的概念与应用 例:跳马。依下图将每一步跳马之后的位置(x,y)放 到一个“结点”里,再用“链子穿起来”,形成 一条链,相邻两结点间用一个指针将两者连到一 起。 2
依上图有7个结点 (x1,y1) (x2,y2) (x6,y6) (x7,y7) 为了表示这种既有数据又有指针的情况, 引入结构这种数据类型。 3
11.7 用指针处理链表 链表是程序设计中一种重要的动态数据结构,它是动态地进行存储 分配的一种结构。 动态性体现为: n链表中的元素个数可以根据需要增加和减少,不 像数组,在声明之后就固定不变; n元素的位置可以变化,即可以从某个位置删除, 然后再插入到一个新的地方; 4
结点里的指针是存放下一个结点的地址 Head 1249 1356 1475 1021 1249 A 1356 B 1475 C 1021 D Null 1、链表中的元素称为“结点”,每个结点包括两 个域:数据域和指针域; 2、单向链表通常由一个头指针(head),用于指向 链表头; 3、单向链表有一个尾结点,该结点的指针部分指 向一个空结点(NULL) 。 5
链表中结点的定义 q链表是由结点构成的, 关键是定义结点; q链表的结点定义打破了先定义再使用的限制, 即可以用自己定义自己; q递归函数的定义也违反了先定义再使用; 这是C语言程序设计上的两大特例 6
链表的基本操作 对链表的基本操作有: (1)创建链表是指,从无到有地建立起一个链表,即往空链表中 依次插入若干结点,并保持结点之间的前驱和后继关系。 (2)检索操作是指,按给定的结点索引号或检索条件,查找某个 结点。如果找到指定的结点,则称为检索成功;否则,称为检索失 败。 (3)插入操作是指,在结点ki-1与ki之间插入一个新的结点k’,使线 性表的长度增1,且ki-1与ki的逻辑关系发生如下变化: 插入前,ki-1是ki的前驱,ki是ki-1的后继;插入后,新插入的结点k’成 为ki-1的后继、ki的前驱. 7
(4)删除操作是指,删除结点ki,使线性表的长度减1,且ki-1、ki和ki+1之 间的逻辑关系发生如下变化: 删除前,ki是ki+1的前驱、ki-1的后继;删除后,ki-1成为ki+1的前驱,ki+1成为 ki-1的后继. (5)打印输出 8
分享到:
收藏