zoukankan      html  css  js  c++  java
  • 数据结构(二):链表

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

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

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

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

    二、图示

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

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

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

    • 查询

      • 链表中没有索引供我们访问,所以由上图我们可以看出来,要想访问链表中的某一个元素,必须从头开始找,利用元素的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

  • 相关阅读:
    ssrf简介
    Mysql 命令 load data infile
    基于约束的SQL注入笔记
    ms17-010
    thinkphp5.0&5.1命令执行 和 thinkphp3.2.3sql注入
    抓取分析菜刀流量
    lamp环境的搭建
    php伪协议
    LeetCode-336 Palindrome Pairs
    LeetCode-335 Self Crossing
  • 原文地址:https://www.cnblogs.com/Infancy/p/12591581.html
Copyright © 2011-2022 走看看