添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

兜兜绕绕两三天终于到了重要的地方了,当初想到要学数据结构的时候,以及后面了解到数据结构的语言无关性之后,心里不免还是有个疑问:Python也没有指针啊,怎么样像C语言那样通过指针来实现更高级的数据结构呢?众所周知,C语言实现的链表是由一个一个的结点构成,每个结点分为数据域和指针域,指针域中存储了其后继结点的 地址 ,通过地址来访问下一个结点,然后一步一步的串联起来形成了一个单链表。但是Python没有指针啊,难不成有什么更高级的玩意儿来替代指针这个东西?带着这个大大的问号,我开始了链表的学习。

结点的实现

class Node(object):
    """节点"""
    def __init__(self, elem):
        self.elem = elem
        self.next = None

当老师直接拿出这个的时候
我:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
我简直就是黑人问号,居然可以这么玩!不过仔细想想,好像也有点道理,毕竟Python中万物皆对象嘛,一个结点用类的方式来实现也比较符合Python的语法结构,一如既往的那么简洁优雅,哈哈!其实这个类的方法实现链表类似于C语言中的结构体实现链表不过其对于指向下一个结点的方式略有不同。
elem是数据域,next类似于C语言中的指针域,是下一个结点的标识。所以一个单一结点类对象的next指向None。
在这里我要特别强调一下Python中的“=”的特殊含义以及作用。Python中的“=”是一种指向性的表示,self.next = None即节点的next指向为None,相当于我在None上贴了一个标签,标签的名字是next,这个next指向None。
在这里插入图片描述

单链表的操作

链表有以下操作方法,包括最基本的增删改查和其他的一些方法。

  • is_empty() 链表是否为空
  • travel() 遍历整个链表
  • length() 链表长度
  • add(item) 链表头部添加元素
  • append(item) 链表尾部添加元素
  • insert(pos, item) 指定位置添加元素
  • search(item) 查找节点是否存在
  • remove(item) 删除节点
  • 单链表操作的实现

    一个单链表首先要有一个头结点:

    class SingleLinkList(object):
        """单链表"""
        def __init__(self, node=None):
            self.__head = node
    
    is_empty()判断链表是否为空

    这个函数主要返回就是True和False,如果头结点是空,那么这个链表就是一个空链表.

    def is_empty(self): """判断链表是否为空""" return self.__head == None
    travel() 遍历整个链表

    cur是一个游标,也就是一个标签,开始指向头结点,随着遍历循环的开始,只要这个结点没有指向None,cur = cur.next游标向下一个结点移动。

    一、链表简介 链表是一种在存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中的指针链接次序实现链表是由一系列的结点组成,结点可以在运行时动态生成。每个结点包含两部分:数据域与指针域。数据域存储数据元素,指针域存储下一结点的指针。 二、单向链表 单向链表也叫单链表,是链表中最简单的形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 head 保存首地址,item 存储数据,next 指向下一结点地址
    A rooted binary tree is a tree with a root node in which every node has at most two children. Your task is to write a program which reads a rooted binary treeTand prints the following informatio...
    链表是一个常用的数据结构,就是像链条一样,由一个节点接着一个节点连接下去。注意:链表在物理存储上是非连续的,所有一般不会基于位置遍历链表链表可以方便的插入元素,但是查找是很耗时。用python实现的单向链表如下: #encoding=utf-8 """链表""" class Node(object): """节点类""" def __init__(self,valu...
    def __init__(self): self.prev = self self.next = self    我们知道数据结构下面有很多的算法需要用...
    文章目录✨一、静态表的提出背景✨二、静态表的原理????2.1 静态链表的数据类型????2.2 静态链表所在的空间的初始化????2.3 创建静态链表——创建头结点并按顺序输入n个元素????2.4 在链表的第i个位置插入元素????2.5 静态链表长度函数与静态链表打印函数????2.6 删除链表中的第i个节点????2.7 在链表中查找元素c与在链表中删除元素c????2.8 静态链表排序(待实现????2.9 销毁静态链表✨三、静态链表的优缺点????优点:????缺点:✨四、汇总与测试函数✨五、