链表
链表的数据结构与栈和队列有所不同,栈和队列都是申请一段连续的存储空间,然后按照顺序存储。而链表是一种在物理上非连续、非顺序的存储结构,数组元素的申请是通过每个元素的指针来联系起来的。
链表分为两种:单向链表和双向链表。我们平时说的,一般是指单向链表,链表在每个节点除了存储数据之外,还额外存储两个指针,分别指向前一个节点,和后一个节点。
链表的代码实现:
|
|
|
|
|
|
###链表的性能分析
链表的插入分为三种:头插法、尾插法、中间插。头部,尾部可以直接插入,时间复杂度为O(1);中间插入需要遍历链表,时间复杂度为O(L),L为链表长度。链表的删除也类似。
链表的头插和头删都是O(1)的时间复杂度,这和栈很像,所以可以用单向链表实现。
哦,还有静态链表。一般来说,静态链表就是使用一段固定长度的数组,其中的每个元素由data(用于记录数据)和cur(指向下一节点)。下面,用代码实现一下:
|
|
|
|
|
|