数据结构(二):链表
-
链表和数组不同,链表在创建的时候不会预先在内存中开辟空间。
-
链表的存储逻辑上是连续的,物理上是不连续的
-
链表在存储数据的内存中会有两块数据,一块用来存数据,一块用来存储指向下一个数据节点的指针
二、图示
-
由上图我们可以看出,链表在逻辑上它的存储是连续的
-
但是在内存实际的存储却是碎片化的
三、操作链表的时间复杂度
-
查询
-
链表中没有索引供我们访问,所以由上图我们可以看出来,要想访问链表中的某一个元素,必须从头开始找,利用元素的next指针,一个挨着一个的查找。
-
所以链表查询元素的时间复杂度为O(n)
-
-
插入
-
由上图我们可以看出,在该链表的a元素与b元素中插入一个c元素。我们只需要a.next=c; c.next=b;就可以了;
-
所以链表的插入元素时间复杂度为O(1)
-
-
删除
-
如上图所示,删除该链表中的b元素,我们只需要将a.next=c; 即可
-