iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python单向链表怎么实现
  • 344
分享到

python单向链表怎么实现

2023-06-30 16:06:50 344人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python单向链表怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python单向链表怎么实现”文章能帮助大家解决问题。单向链表:是将所有的数据作为一个个节点,将所有的节点

这篇文章主要介绍“python单向链表怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python单向链表怎么实现”文章能帮助大家解决问题。

单向链表:是将所有的数据作为一个个节点,将所有的节点链接在一起。每一个节点中又分为: 存储数据区,链接区

存储数据区: 存储具体的数据

链接区: 指向下一个节点

分析实现:

分析:根据链表的特性,首先要存放有数据的容器,还要有存放节点的容器
2、 节点类中:要有数据区和next区
3、 链表类中:存放所有节点

单链表操作

链表是否为空
2、链表的长度
3、遍历链表
4、链表头部添加元素
5、链表尾部添加元素
6、链表指定位置添加元素
7、链表删除节点
8、查找节点是否存在

代码实现

# Functions  函数声明class node():    """    存放节点类    每次调用该类,实例化一个节点    默认每个节点中有数据区,next区。    数据区为该数据,next区为空    """    def __init__(self, item,next=None):        self.item = item        self.next = next        passclass Linklist():    """    存放数据类    将所有的节点存放起来的容器    首先,默认链表为空,在这里需要有一个头节点,默认头节点为空    """    def __init__(self, head=None):        self.head = head    def is_empty(self):        return self.head == None    def append(self, item):        """        往链表尾部添加数据        1、实例化游标:使用游标指向每一个数据,检索数据和判断数据next是否为空        2、移动游标,从头节点开始,每次使用self.next移动,以为next指向的就是下一个数据        3、添加数据,首先判断链表是否为空,为空的情况下,直接将头节点等于node数据        4、如果不为空,需要从头节点开始,移动游标,判断游标指向的next是否为空        5、使用循环不停的移动节点,当遇到节点中的next为空的情况下停止移动        6、循环条件: 当 条件 != None, 进入循环获取,当cur为空时就不会进入循环,所以在这里要使用 cur != None        """        # 首先要实例化一个节点        node = Node(item)        # 如果链表为空        if self.is_empty():            # 直接将头节点的next添加node            self.head = node        else:            # 实例化一个游标            cur = self.head            while cur.next != None:                # 移动游标,得到最后一个游标的数据                cur = cur.next            # 将移动后的数据的下一个next添加上 node            cur.next=node            pass    def travel(self):        """遍历数据"""        # 实例化一个游标        cur = self.head        # 数据链为空的情况        if self.is_empty():            print('')        else:            # 获取每个数据区中的数据            # 移动游标,每移动一次,输出一次数据区内的数据            while cur != None:                print(cur.item, end=' ')                cur = cur.next            print()    def length(self):        """返回链表的长度"""        # 实例化游标        cur = self.head        # 计数,这里对空链表进行判断,如果是链表,则不会进入循环,直接输出 0        count = 0        # 移动游标,获取下一个数据,然后让count +=1        while cur != None:            # 计数            count+=1            # 移动游标            cur = cur.next        return count    def add(self, item):        """        头部添加数据        分析: 将数据添加到第一个节点当中        1、 需要先将node的next指向 原第一个节点,这原第一个节点就是self.head        2、 再讲self.head指向node进行连接        """        # 先实例化节点        node = Node(item)        # 将数据添加到头部当中        node.next=self.head        self.head=node    def insert(self, index, item):        """        指定位置添加数据        分析:        1、首先要找到,该位置的数据        2、将要添加的数据next等于 原位置的next数据        3、原数据的 next等于node新数据        """        if index<=0:            # 如果输入的索引小于或者等于O,默认使用头插发            self.add(item)        elif index>self.length():            # 如果输入的索引大于链表的长度,使用尾插法            self.append(item)        else:            # 实例化数据节点            node = Node(item)            # 找到该数据的位置            # 实例化一个游标            cur = self.head            # 计数            conent = 0            while conent<(index-1):                conent+=1                cur = cur.next            node.next=cur.next            cur.next=node    def search(self, item):        """        查询指定的数据是否存在        分析: 查询指定的数据,需要对整个链表扫描,判断这个数据是否等的该节点中的数据        """        # 实例化一个游标        cur = self.head        # 进行判断是否相等        while cur != None:            # 判断            if cur.item == item:                return True            else:                cur = cur.next            pass        # 否则返回False        return False    def remove(self, item):        """        移除指定的数据        分析:        1、删除数据,需要首先判断数据是否存在        2、找到该数据所在的位置,将该数据的上一个数据的next指向自己的next        3、如何获取该数据的指向,和上一个数据的指向        4、需要定义两个指针        5、先将两个指针相等,再讲一个指针先移动一次,再同时移动        """        # 先找到该数据        cur = self.head        por = None        while cur != None:            if cur.item==item:                # 要判断是否为第一个节点                if cur == self.head:                    self.head = cur.next                else:                    por.next = cur.next                break            else:                # 如果在当前节点中没有相等的,将节点进行移动                # 移动要注意,现将两个游标相等,再讲另一个游标移动一次                por = cur                cur = cur.next

测试运行

# 程序的入口if __name__ == "__main__":    s = Linklist()    s.append(100)    s.append(200)    s.append(300)    s.add(1)    s.add(12)    s.insert(-1,6)        s.travel()       #  6 12 1 100 200 300     print(s.length())  # 6    print(s.search(11)) # False    s.remove(12)    s.travel()       # 6 1 100 200 300     print(s.length())  # 5    print(s.search(11)) # False    pass

关于“python单向链表怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: python单向链表怎么实现

本文链接: https://www.lsjlt.com/news/330116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python单向链表怎么实现
    这篇文章主要介绍“python单向链表怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python单向链表怎么实现”文章能帮助大家解决问题。单向链表:是将所有的数据作为一个个节点,将所有的节点...
    99+
    2023-06-30
  • python怎么实现单向链表及单向链表的反转
    这篇文章给大家分享的是有关python怎么实现单向链表及单向链表的反转的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。链表的定义链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息...
    99+
    2023-06-14
  • Python实现单向链表
    单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。 单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头...
    99+
    2024-04-02
  • 怎么用Python实现单向链表
    这篇文章主要介绍“怎么用Python实现单向链表”,在日常操作中,相信很多人在怎么用Python实现单向链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现单向链表”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • python中的单向链表怎么实现
    这篇文章主要介绍了python中的单向链表怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中的单向链表怎么实现文章都会有所收获,下面我们一起来看看吧。一、单向链表概念单向链表的链接方向是单向的...
    99+
    2023-06-29
  • python单向循环链表怎么实现
    单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链接区,数据区存储数据,链接区链接下一个节点item: 存储数据的地方next: 链接下一个节点注意: 单向循环链表是首位链接,即尾部的节点要和头部的节点链接单向链表操作1、链表是否...
    99+
    2023-05-16
    Python
  • python如何实现单向链表及单向链表的反转
    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init_...
    99+
    2024-04-02
  • python中的单向链表实现
    目录一、单向链表概念二、建立节点对象三、链表对象的初始定义四、判断链表是否为空五、获取链表长度六、向头部添加节点七、向尾部添加节点八、指定位置插入节点九、删除指定位置的节点十、查找是...
    99+
    2024-04-02
  • python单向链表的实现方法
    这篇文章主要介绍了python单向链表的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(...
    99+
    2023-06-14
  • python双向链表怎么实现
    这篇文章主要介绍“python双向链表怎么实现”,在日常操作中,相信很多人在python双向链表怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python双向链表怎么实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-30
  • Java​逆转单向链表怎么实现
    这篇文章主要讲解了“Java逆转单向链表怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java逆转单向链表怎么实现”吧!首先这是一个单向的链表,不同于 Java 里面的 Linked...
    99+
    2023-06-04
  • python单向循环链表如何实现
    本篇内容主要讲解“python单向循环链表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python单向循环链表如何实现”吧!单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链...
    99+
    2023-07-06
  • 怎么用Python实现双向链表
    这篇文章主要介绍“怎么用Python实现双向链表”,在日常操作中,相信很多人在怎么用Python实现双向链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现双向链表”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • C++中怎么实现一个单向链表
    C++中怎么实现一个单向链表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++单向链表实现代码:#include < iostream>&...
    99+
    2023-06-17
  • python单向链表实例详解
    使用python实现单向链表,供大家参考,具体内容如下 单向链表:是将所有的数据作为一个个节点,将所有的节点链接在一起。每一个节点中又分为: 存储数据区,链接区 存储数据区: 存储具...
    99+
    2024-04-02
  • python实现单链表
    #encoding:utf-8 import sys class Lnode():     def __init__(self,elem,next=None):         self.elem = elem    #节点的值   ...
    99+
    2023-01-31
    链表 python
  • Python实现双向链表
    之前写的单向链表和环形链表都只是单向的,只能单向遍历,不能根据后面的节点获取前面的节点,除非进行反转操作。 双向链表每个节点都有两个指针,这两个指针分别指向前后两个节点,这样就可以从...
    99+
    2024-04-02
  • python 实现线性链表(单链表)
    初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。 #!/usr/bin/python # -*- coding:utf-8 -*- # Author: Hui # Date: 2017-10-13...
    99+
    2023-01-31
    链表 线性 python
  • python双向循环链表怎么实现
    本文小编为大家详细介绍“python双向循环链表怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python双向循环链表怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。双向循环链表: 将所有的数据存...
    99+
    2023-06-30
  • Java数据结构之链表实现(单向、双向链表及链表反转)
    前言 之前学习的顺序表查询非常快,时间复杂度为O(1),但是增删改效率非常低,因为每一次增删改都会元素的移动。可以使用另一种存储方式-链式存储结构。 链表是一种物理存储单元上非连续、...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作