美文网首页
链表(一)

链表(一)

作者: 小董不太懂 | 来源:发表于2019-08-17 20:59 被阅读0次
上个笔记我们讨论了列表扩容的问题,是必须要将列表扩充固定数目或者加倍吧。那么我们有没有可能往列表里加一个数据,我们就扩容一个数据,不再额外扩充浪费空间的这种数据结构存在呢?

如上图所示,比如我们先建立一个li的空列表,然后依次加入200,400,600这三个元素,每一个元素依次指向下一次元素,犹如被一根线串起来的,是不是我们就可以实现上述的数据结构了,当然这只是简单的一维链表,后面我们会继续介绍更多的也会更加复杂的链表结构,比如树图等。
这就引入了一个新的概念。

链表

为什么需要链表

顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。
链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。

链表的定义

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。

单向链表

单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。
  • 表元素域elem用来存放具体的数据。
  • 链接域next用来存放下一个节点的位置(python中的标识)
  • 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。

python中地址的概念

我们先来了解一下python中关于地址的概念:
我们先来思考一下,如何实现交换两个变量,是不是只要这样就可以了:

那我们有没有探究过它的本质呢? 看到这张图,我们会感觉诧异,为什么a不是内存的标号,而是一块新的内存呢,这就是python与其他语言的不同之处,a代表了一块新的内存且这块内存指向我们等号右边的元素。 第三步a,b赋值操作 在python中变量名就只是变量名,并不保存实际元素,而是保存实际元素所在的地址,从而指向这个元素
我们再看一个例子

这个例子更加印证了变量a只是个名字,存储的是指向等号右边元素的地址。

节点实现

  """单链表的结点"""
   def __init__(self,item):
      # _item存放数据元素
     self.item = item
    # _next是下一个节点的标识
  self.next = None

我们根据图再来理解一下上面那一段代码的意思,表示节点是不是需要定义一个类,然后是node1和node2,node1保留了指向node2的地址,并不是说node1包含node2而是node1指向node2,并且node1和node2是两块分开的内存,但通过next串连起来了。

相关文章

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

  • 链表

    链表 单链表反转链表中环的检测两个有序链表合并删除链表倒数第n个节点求链表的元素总个数 一.单向链表 链表共有特征...

  • 数据结构——链表

    本文所讲的链表是单链表,链表采用无头链表 科普下:一般链表可以分为有头节点的链表与无头节点的链表 有头节点的链表:...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • 数据结构与算法之双向链表(3.3)

    目录 双向链表简介双向链表重要方法讲解实战检测双向链表,单向链表性能对比 一 双向链表简介 双向链表-只有一个元素...

  • 数据结构-单向链表

    一、线性表 线性表可以分为: 顺序表(数组) 链表(单向链表、双向链表、循环链表) 二、链表 链表是一种链式存储的...

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 单链表反转

    链表 链表分为单链表,循环链表,和双向链表对于单链表来说,它的第一个节点也就是头结点记录着链表的基地址,而最后一个...

  • C语言实现静态链表

    静态链表(单链表的一种形式) 有时,也可以借用一维数组来描述线性链表,我们称这种链表为静态链表。 静态链表需要实现...

  • 线性表--链式存储结构--双向链表

    双向链表 一、双向链表结构 双向链表结点结构 既然单链表可以有循环链表,那么双向链表当然也可以有。 由于这是双向链...

网友评论

      本文标题:链表(一)

      本文链接:https://www.haomeiwen.com/subject/nbohsctx.html