python单链表实现代码实例

下面是python单链表实现代码实例的完整攻略:

什么是单链表

单链表是数据结构中最简单的一种形式,每个节点包含两个信息:当前节点的值(value)和指向下一个节点的引用(next)。单链表的第一个节点被称为头节点,而最后一个节点被称为尾节点。

单链表的实现

在Python中,可以通过定义一个链表类来实现单链表。该类至少应该具有以下方法:

  • __init__(): 初始化链表。
  • is_empty(): 返回链表是否为空。
  • length(): 返回链表的长度。
  • travel(): 遍历链表并打印每个节点。
  • add(value): 在链表头部添加一个节点。
  • append(value): 在链表尾部添加一个节点。
  • insert(index, value): 在指定位置插入一个节点。
  • remove(value): 删除链表中第一个值为value的节点。
  • pop(): 删除链表中最后一个节点,并返回其值。

其中,__init__()方法应该初始化一个头节点,指向下一个节点的引用为None。

下面是一个Python单链表的实现代码示例:

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = Node(None)

    def is_empty(self):
        return self.head.next == None

    def length(self):
        count = 0
        current = self.head.next
        while current != None:
            count += 1
            current = current.next
        return count

    def travel(self):
        current = self.head.next
        while current != None:
            print(current.value, end=' ')
            current = current.next
        print()

    def add(self, value):
        node = Node(value)
        node.next = self.head.next
        self.head.next = node

    def append(self, value):
        node = Node(value)
        current = self.head
        while current.next != None:
            current = current.next
        current.next = node

    def insert(self, index, value):
        if index <= 0:
            self.add(value)
        elif index >= self.length():
            self.append(value)
        else:
            node = Node(value)
            current = self.head.next
            count = 0
            while count < index - 1:
                count += 1
                current = current.next
            node.next = current.next
            current.next = node

    def remove(self, value):
        current = self.head.next
        previous = self.head
        while current != None:
            if current.value == value:
                previous.next = current.next
                return
            previous = current
            current = current.next

    def pop(self):
        if self.is_empty():
            return None
        current = self.head
        while current.next.next != None:
            current = current.next
        popped_node = current.next
        current.next = None
        return popped_node.value

上述代码实现了一个单链表类,具有添加、删除、插入、遍历等操作。下面给出两个使用示例:

示例1:创建一个链表并遍历

l = LinkedList()
l.append(1)
l.add(2)
l.insert(1, 3)
l.travel()

输出:

2 3 1

示例2:从一个链表中删除一个节点

l = LinkedList()
l.append(1)
l.add(2)
l.insert(1, 3)
l.remove(2)
l.travel()

输出:

2 1

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python单链表实现代码实例 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 一文详解Lombok中@ToString()的使用技巧

    当我们在Java开发中编写实体类时,经常需要手动编写toString()方法以便于打印对象的属性值进行调试。这样会导致很多重复而繁琐的代码,这就是Lombok中的@ToString()注解所解决的问题。 Lombok中的ToString @ToString()是Lombok中的一个注解,当我们使用该注解时,Lombok会自动生成toString()方法,该方…

    other 2023年6月27日
    00
  • GUI程序原理分析

    GUI程序原理分析 GUI(Graphical User Interface)是指图形用户界面,是一种通过图形化方式来展示和操作计算机系统的界面。在本文中,我们将详细介绍GUI程序的原理和分析方法,并提供两个示例说明。 GUI程序的原理 GUI程序的原理是通过图形化方式来展示和操作计算机系统的界面。GUI程序通常由窗口、菜单、按钮、文本框、标签等组件构成,用…

    other 2023年5月5日
    00
  • Angular 的 Change Detection机制实现详解

    Angular 的 Change Detection 机制实现详解 Angular 是一个流行的前端框架,它采用了一种称为 Change Detection 的机制来监测和更新组件的视图。本文将详细讲解 Angular 的 Change Detection 机制的实现原理,并提供两个示例来说明其工作方式。 Change Detection 的基本原理 Cha…

    other 2023年7月28日
    00
  • linux下制作ISO文件

    Linux下制作ISO文件的完整攻略 什么是ISO文件? ISO文件是一种光盘镜像文件格式,包含着完整的光盘内容,可以保存在计算机上或者刻录为光盘。制作ISO文件的一个主要应用就是用于操作系统安装介质的制作。 制作ISO文件的工具 Linux操作系统下有多种可用的工具可以用来制作ISO文件,常用的有: Genisoimage:这是一个开源的光盘镜像生成工具,…

    other 2023年6月27日
    00
  • Windows Phone 8.1完结:正式停止接收应用更新

    Windows Phone 8.1停止接收应用更新攻略 微软在2017年7月11日正式停止了Windows Phone 8.1的支持,包括停止对该系统的安全更新、修复漏洞等的更新,也包括停止接收应用程序的更新。 为什么要停止接收应用更新? Windows Phone 8.1是微软的旧操作系统,其用户量已经大幅下降,并且这个系统已经过时且不再受支持。大部分开发…

    other 2023年6月25日
    00
  • python导入openpyxl报错问题 终于解决啦

    Python导入openpyxl报错问题终于解决啦 最近我在写一个Python脚本,需要使用到openpyxl库,然而在导入openpyxl时,总是会提示错误信息。 错误信息大概如下: ImportError: No module named ‘openpyxl’ 经过我反复查看代码和下载安装包,浪费了不少时间,终于找到了解决方法,分享给大家。 问题分析 我…

    其他 2023年3月28日
    00
  • Adobe Dimension CC是什么软件? Adobe Dimension CC 2018 mac快捷键大全

    Adobe Dimension CC 是什么软件? Adobe Dimension CC 是一款由 Adobe 公司开发的三维渲染和设计软件。它提供了一个直观的界面,使用户能够轻松创建逼真的三维场景、产品渲染和包装设计。Dimension CC 结合了照片合成、3D 模型和材质库,使用户能够以更快的速度创建高质量的视觉效果。 Adobe Dimension …

    other 2023年9月6日
    00
  • 苹果iOS10 Beta3开发者预览版固件下载地址汇总(附升级方法)

    苹果iOS10 Beta3开发者预览版固件下载及升级方法 苹果iOS10 Beta 3开发者预览版固件已经发布了,以下是固件下载地址及升级方法的详细攻略。 下载地址 在下载之前,请确保你已经注册了苹果开发者账号。 前往 https://developer.apple.com/download/ ,登录 Apple Developer Center。 选择 “…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部