众所周知,在一个数组中插入或是删除一个元素,都会需要移动后面所有的元素,导致代码的运行效率极低
但是!链表就可以很好的解决这一问题
就这么想吧,链表是一辆火车,链表的表头就是火车头,链表的每一个元素就是火车的一节节车厢,车厢里装的东西就是元素的数据域,每个车厢之间的卡子就是元素的指针
不会吧?不会有人没有见过火车吧?不会吧不会吧?
总之,链表就是元素之间前后依赖,串联而成的
啊,对。链表的元素是不能随机访问的,就像你要从一个车厢到远处的另一个车厢,当然不是跨越一道任意门走过去,你没有这东西,所以,只能一节一节走
除了车头和车尾,其余的每一节车厢前后都只能各连接一节车厢
因此,链表的元素前面和后面不会出现多个元素相连的情况
回顾一下,数组是一种支持随机访问,但不支持任意插入或是删除的数据结构
但是,链表支持在任意位置插入或删除,虽然访问只能挨个来
链表呢,分为两种
单项链表
双向链表
在竞赛中,我们通常开一个固定大小的空间,然后用数组来模拟链表
对于链表来说,每一个元素都需要存储两个信息
本身的数值,和下一个元素编号
用数组模拟一下