单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级清华大学 黄维通 设计制作第11章 链表及其应用 1清华大学 黄维通 设计制作11.1 链表的基本概念 2清华大学 黄维通 设计制作 链表中的所有数据元素都分别存储在一个个具有相同数据结构的结点里面结点是链表的基本存储单元一个结点与一个数据元素一一对应每个结点内部都是内存中一块连续的存储空间11.1.1 链
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级1线性表可以用数组存储复习:数组的优点:可以直接存取某个元素缺点:1:元素添加删除要移动大量元素2:大小无法预计的情况下可能会造成空间浪费21 链表的表示链式存储结构特点:其结点在存储器中的位置是随意的即逻辑上相邻的数据元素在物理上不一定相邻如何实现通过指针来实现注意:每个存储结点都包含两部分:
在单向链表中一个结点的后续结点是由该结点包含的指针指出的它可以实现对诸如队列(按数据的输入顺序先进先出)堆栈(按数据的输入顺序先进后出)等数据结构类型的数据的操作这种类型的链表如果要查找某个结点必须由链表头指针所指的第一个结点开始顺序查找headNULLhead return (head)datapnext5850§ 链表的删除删除值为6的表项:p
链表7/10/20241结构体如何实现链表?链表的每一节都不是一个简单类型的变量。结构体变量可以完成这样的工作。7/10/20242结构体的定义实例struct node{int num;struct node * next;};7/10/20243创建的方法定义节点类型(结构体类型)生成节点挂接节点,形成链表释放节点7/10/20244生成节点函数void * malloc(unsigned i
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级 补充:链表应用1建立单链表2插入结点4删除结点例题:link.cpp1建立单链表(1) 头插法建表① 算法思路??? 从一个空表开始重复读入数据生成新结点将读入数据存放在新结点的数据域中然后将新结点插入到当前链表的表头上直到读入结束标志为止② 具体算法实现beforecreat( ) 返回单
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级1.5 链表线性单链表双向链表循环链表结构及其基本运算11.5.1 线性表的链式存储结构 将线性表的元素放到一个具有头指针的链表中链表中每个结点包含数据域和指针域 ? 数据域存放数据指针域存放后继结点的地址最后一个结点的指针域为空逻辑上相邻的数
指针域链表存放示意图如下: 讨论1 :每个存储结点都包含两部分:数据域和 head7无头结点8QIAN37答:头指针是指向链表中第一个结点的指针因此关键是要寻找第一个结点的地址Hdata1213msizeof(node) 单位是字节
19链表主要内容动态内存分配链表概述单向链表复杂链表主要内容动态内存分配链表概述单向链表复杂链表1 动态内存分配静态和动态内存分配C的动态内存分配函数动态内存分配实例1-1 静态和动态内存分配根据内存分配的时机,C语言的内存分配分为静态内存分配和动态内存分配静态内存分配是在编译时完成,需要在编译前确定需要分配的内存块的大小变量、数组、结构占用存储空间的大小在说明时确定,程序执行过程中不能改变,通常
第五讲线性表的链式存储(二)2、4 循环链表如果使单链表中最后一个结点的指针域指向头结点,整个链表就形成一个环,这样从链表中任一结点出发都可以找到其它结点,称这种链式存储结构为循环链表。head… head 单循环链表结构图循环链表的操作和单链表的操作基本一致。只是算法中循环条件不是判断p或者 p-next是否为NULL,而是判断它们是否等于头指针。 带头结点的循环链表为空的条件是: head-n
第10章 结构体与链表101 结构体类型的定义与变量说明102 结构体类型变量的引用103 结构体与数组104 结构体与指针105 结构体与函数106 链表 101结构体类型的定义与变量说明1011结构体类型的定义结构体是具有不同类型的数据的有序集合结构体定义:struct结构体类型名{类型标识符 成员名1; 类型标识符 成员名2;…… 类型标识符 成员名n;}; struct:定义结构体类型的
违法有害信息,请在下方选择原因提交举报