还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《结构与链表》ppt课件目录•结构体基础•链表基础CONTENT•结构体与链表的关系•链表的高级操作•链表在数据结构中的应用01结构体基础结构体的定义010203结构体的概念结构体的语法结构体的实例化结构体是一种自定义的数在C语言中,使用`struct`通过使用`struct`关键字和据类型,可以包含多个不关键字定义结构体,后面结构体名称来创建结构体同类型的数据成员跟上结构体的名称和数据变量,并为其分配内存空成员列表间结构体的应用场景数据封装数据交换自定义数据类型结构体可以将多个相关的在不同的函数或程序之间,结构体可以作为自定义的数据成员组合在一起,形可以通过结构体传递复杂数据类型,用于定义自己成一个整体,方便数据的的数据类型,实现数据的的数据结构和对象处理和操作交换和共享结构体的内存布局内存对齐字节对齐方式结构体的数据成员在内存中按照一定可以通过设置不同的字节对齐方式来的规则对齐,以提高内存的访问效率控制结构体变量在内存中的布局内存开销每个结构体变量都会占用一定的内存空间,包括其数据成员所占用的内存02链表基础链表的定义链表是一种线性数据结构,由一链表通过指针将各个节点连接起链表的节点通常包含两部分数系列节点组成,每个节点包含数来,形成一个有序的链式结构据域和指针域,数据域用于存储据和指向下一个节点的指针数据元素,指针域用于指向下一个节点链表的应用场景链表适用于需要频繁插入、删链表在处理大数据量、需要动链表也适用于需要按照元素顺除操作的数据结构,如动态数态扩展的数据结构中应用广泛,序进行遍历的数据结构,如二组、队列、栈等如数据库索引、文件系统等叉树等单链表的实现单链表是一种简单的链表,由一系列节点组成,每个节点包含数据和指向下一个节点的指针在单链表中,头节点是第一个节点,尾节点是最后一个节点单链表的实现包括节点的定义、节点的创建、节点的插入、节点的删除等操作单链表的实现01020304节点的定义通常包括数据域和节点的创建通常包括为数据域节点的删除通常包括修改指针节点的插入通常包括创建新节指针域,数据域用于存储数据分配空间和初始化指针域为空域等操作点、修改指针域等操作元素,指针域用于指向下一个节点03结构体与链表的关系结构体与链表的联系结构体和链表都是用于存储数据的结结构体和链表都可以通过指针访问和构,它们都可以用来表示复杂的数据修改数据类型结构体和链表都允许将多个不同类型的数据组合在一起,形成一个复合数据类型结构体与链表的区别结构体是静态的,它在编译时确结构体的成员是连续存储的,而结构体的访问方式是通过成员名定大小,而链表是动态的,它在链表的节点是分散存储的,每个直接访问,而链表的访问方式是运行时根据需要分配内存节点包含数据和指向下一个节点通过指针遍历的指针结构体与链表在内存中的表示01结构体的内存布局是连续的,每个成员占用一定的内存空间,按照声明的顺序排列02链表的节点在内存中是分散的,每个节点包含数据和指向下一个节点的指针节点的内存地址不连续,需要通过指针进行访问04链表的高级操作链表的遍历01020304遍历的定义前向遍历后向遍历双向遍历遍历是按照某种顺序访问链表从头节点开始,逐个向后访问从尾节点开始,逐个向前访问从头节点开始,先向前访问节中所有元素的过程,使得每个节点节点点,再从尾节点开始,逐个向元素被访问一次且仅一次后访问节点链表的插入操作插入的定义在头部插入在尾部插入在指定位置插入在链表的指定位置插入找到要插入的位置,将将新节点插入到链表的将新节点插入到链表的一个新节点,使得插入新节点插入到该位置的头部,成为新的头节点尾部后的链表仍然保持有序前一个节点之后链表的删除操作删除的定义删除尾节点从链表中删除一个指定节点,将尾节点指向倒数第二个节点,使得删除后的链表仍然保持有并释放尾节点的内存空间序删除头节点删除指定节点将头节点指向第二个节点,并找到要删除的节点的前一个节释放头节点的内存空间点,将其指向要删除节点的下一个节点,并释放要删除节点的内存空间05链表在数据结构中的应用单链表在数据结构中的应用特点节点只能从头到尾进行遍历,插入定义和删除操作需要移动大量节点单链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针应用场景适用于需要频繁进行插入和删除操作的数据集合,如电话簿、评论列表等双链表在数据结构中的应用定义特点应用场景双链表与单链表类似,每个节点可以进行前向和后向的遍历,插适用于需要双向遍历的数据集合,包含数据和两个指针,一个指向入和删除操作相对简单如课程表、时间线等前一个节点,另一个指向后一个节点循环链表在数据结构中的应用定义循环链表的节点形成一个闭环,最后一个节点指向第一个节点特点可以进行任意方向的遍历,但插入和删除操作需要特别注意环的断开和闭合应用场景适用于需要循环遍历的数据集合,如环形缓冲区、轮询算法等。