本人坚持更新C语言,数据结构,操作系统知识,可以收藏+关注随时了解😜😜😜
目录
链表的定义
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
用通俗的话来讲就是
N个节点离散分配
每个节点由数据域(存放数据),和指针域(下一个节点的地址)组成
彼此通过指针相连
每个节点只有一个前驱节点,只有一个后继节点
首节点没有前驱节点,尾结点没有后继节点
专业术语
头节点
头节点的数据类型和首节点的数据类型一模一样
头节点是首节点前面的那个节点
头节点不存放有效数据
设置头节点的目的是为了方便对链表操作
头指针
存放头节点地址的指针变量
首节点
存放第一个有效数据的节点
尾结点
存放最后一个有效数据的节点,尾结点的指针域为NULL
链表和数组的比较
数组的优点:存取速度快,因为数组一段连续的存储单元,通过索引值a[i]就可以快速的访问
缺点:
需要一个连续的很大的内存
插入和删除元素的效率很低,因为数组是连续的,所以在一个很长的数组中,删除或插入一个元素,就会移动很多的元素,使得效率低下
链表的优点:
插入和删除元素效率高
不需要一个连续的很大的内存,因为链表是离散的
缺点:
查找某个位置的元素效率低