之前的一个博客讲了链表的一些知识,最近又学了一些,这个博客重新梳理一下。
1.链表简介
链表是一种线性表,但它与一维数组、字符串等其他的线性表不一样。
其他线性表在电脑内存的空间长这样:
而链表长这样:
看出区别了吗?
数组是连在一起的一串内存,而链表则是一些零散的内存以一条链连在一起。
这种性质导致链表不能像数组那样随机访问。
2.时间复杂度
1.插入
一维数组插入需要将插入那个位置的元素及后面的元素后移,时间复杂度是O(n-k)。
链表的插入需要一个一个找到要插入的位置,时间复杂度是O(k);
2.访问
一位数组可以随机访问,时间复杂度是O(1)。
链表需要一个一个找过去,时间复杂度是O(k);
3.链表的类型
3.1.单链表
3.1.1.普通单链表
普通单链表是最简单、最基础的链表。
3.1.2.循环单链表
最后一个变量指向第一个变量。
3.2.双链表
3.2.1.普通双链表
顾名思义,双链表有2个指针。
3.2.2.循环双链表
第一个变量和最后一个变量链接。
你懂了吗?