第五讲线性表的链式存储(二)2、4 循环链表如果使单链表中最后一个结点的指针域指向头结点,整个链表就形成一个环,这样从链表中任一结点出发都可以找到其它结点,称这种链式存储结构为循环链表。head… head 单循环链表结构图循环链表的操作和单链表的操作基本一致。只是算法中循环条件不是判断p或者 p-next是否为NULL,而是判断它们是否等于头指针。 带头结点的循环链表为空的条件是: head-n
#
例: 单链表的建立和输出node pqhead 一般需要3个指针变量int n 数据元素的个数int m=sizeof(node) 结构类型定义好之后每个node类型的长度就固定了m求一次即可9paq = p->next 首先保存b的指针靠它才能找到cp->next=q->next 将ac两结点相连淘
#
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级清华大学 黄维通 设计制作第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 线性表的链式存储结构 将线性表的元素放到一个具有头指针的链表中链表中每个结点包含数据域和指针域 ? 数据域存放数据指针域存放后继结点的地址最后一个结点的指针域为空逻辑上相邻的数
违法有害信息,请在下方选择原因提交举报