数据结构第三讲:链表
§2.3 单链表和循环单链表
§2.3.1 单链表的定义
用一个指针表示结点间的逻辑关系,单链表的一个存储结点包含两个部分:
- data:数据域,用于存储线性表的一个数据元素,也就是说在单链表中一个结点存放一个数据元素。
- next:指针域(链域),用于存放一个指针,该指针指向后继元素对应的结点,也就是说单链表中结点的指针用于表示后继关系。
单链表分为带头结点和不带头结点两种类型。
§2.3.2 单链表基本操作
初始化、销毁函数需要分配、释放内存。
整体创建单链表有头插法(简单,得到的相反)、尾插法(麻烦,得到的相同),复杂度。
指定指针 处插入、删除,但找到指定位置。
§2.3.3 循环单链表
尾结点的 next 域指向头结点。
比如求约瑟夫环。
§2.3.4 双链表和循环双链表
双链表中用 两个指针 表示结点间的逻辑关系。
- prior:指向其前驱结点的指针域。
- next:指向其后继结点的指针域。
循环双链表可以直接从头向前走到尾节点,尾部操作都是。循环双链表最聪明。
§2.3.5 顺序表与链表的比较
顺序存储结构
- 优点:无须为表示线性表中元素之间的逻辑关系而增加额外的存储空间,存储密度大。具有 随机存储 特性。
- 缺点:插入和删除操作需要移动大量元素。如果采用静态数组存储线性表元素,其 空间大小分配难以掌握,大大了会浪费空间,分小了易发生上溢出;如果采用动态数组存储线性表元素,其算法设计比较复杂。
链式存储结构
- 优点:由于采用结点的动态分配方式,具有 良好的适应性。插入和删除操作只需修改相关指针域,不需要移动大量元素。
- 缺点:为表示线性表中元素之间的逻辑关系而需要增加额外的存储空间(指针域),存储密度小。不具有随机存储特性。
本站所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小明の雜貨鋪!
評論