链表定义
链表定义:
n个节点离散分配;彼此通过指针相连;每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。
专业术语:
首节点:第一个有效节点
尾节点:最后一个有效节点
头节点:头节点的数据类型和首节点的数据类型相同。第一个有效节点之前的那个节点;头节点并不存放存放有效数据;加头节点的目主要是为了方便对链表的操作。
头指针:指向头节点的指针变量
尾指针:指向尾节点的指针变量
头节点-首节点。。。。。。尾节点【头节点并没有存储有效数据,也没有存放链表中有效节点的个数。首节点开始存放有效数据。在链表前边加一个没有实际意义的头节点,可以方便对链表的操作。头节点于之后节点的数据类型相同】
链表的分类:
单链表:每个链表的指针域只能指向后面的节点
双链表:每一个节点有两个指针域
循环链表:能通过任何一个节点找到其他所有的结点
非循环链表:
链表的优缺点
链表的时间复杂度
插入O(1), 删除O(1),查询O(n)
随机访问
数组O(1),链表O(n)
占用内存
链表的占用内存比数组多,但是插入和删除的效率高,这就是空间换时间的思想。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。
学如逆水行舟,不进则退。
博客园技术交流群 群 号:1073255314
(本群没人,刚刚建立 -_-!!! )