数据结构(二):链表

一、概述(本文以最简单的单向链表为例,其它复杂的链表以后再说明)

  • 链表和数组不同,链表在创建的时候不会预先在内存中开辟空间。

  • 链表的存储逻辑上是连续的,物理上是不连续的

  • 链表在存储数据的内存中会有两块数据,一块用来存数据,一块用来存储指向下一个数据节点的指针

二、图示

  • 由上图我们可以看出,链表在逻辑上它的存储是连续的

  • 但是在内存实际的存储却是碎片化的

三、操作链表的时间复杂度

  • 查询

    • 链表中没有索引供我们访问,所以由上图我们可以看出来,要想访问链表中的某一个元素,必须从头开始找,利用元素的next指针,一个挨着一个的查找。

    • 所以链表查询元素的时间复杂度为O(n)

  • 插入

    • 由上图我们可以看出,在该链表的a元素与b元素中插入一个c元素。我们只需要a.next=c; c.next=b;就可以了;

    • 所以链表的插入元素时间复杂度为O(1)

  • 删除

    • 如上图所示,删除该链表中的b元素,我们只需要将a.next=c; 即可

    • 所以链表删除元素的时间复杂度为O(1)

转载请注明出处:https://www.cnblogs.com/Infancy/p/12591581.html

posted on 2020-03-29 12:15  猪肉王子-17  阅读(272)  评论(0编辑  收藏  举报

导航