python版本单链表实现代码

让我来详细讲解一下“python版本单链表实现代码”的完整攻略。

1. 单链表介绍

单链表是一种数据结构,它由多个节点构成,每个节点包含数据和指向下一个节点的指针。单链表的特点是插入和删除的时间复杂度为O(1),但访问的时间复杂度为O(n)。具体实现时,我们需要定义一个链表节点类Node和链表类LinkedList来表示单链表。

2. 链表节点类Node

链表节点类Node只包含两个属性,data和next,分别表示节点的数据和指向下一个节点的指针。代码如下:

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

3. 链表类LinkedList

链表类LinkedList包含两个属性,head和size,分别表示链表的头节点和链表的长度。代码如下:

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

链表类LinkedList还需要实现插入、删除、获取链表长度等操作。下面分别介绍这些操作的实现。

4. 插入节点

插入节点操作包含三个步骤:创建一个新的节点,将新节点的next指向当前节点的next,将当前节点的next指向新节点。代码如下:

def insert(self, data, index):
    if index < 0 or index > self.size:
        raise Exception("Index out of range")
    node = Node(data)
    if index == 0:
        node.next = self.head
        self.head = node
    else:
        p = self.head
        for i in range(index - 1):
            p = p.next
        node.next = p.next
        p.next = node
    self.size += 1

插入节点的示例:

linked_list = LinkedList()
linked_list.insert(1, 0)    # 在索引0处插入1
linked_list.insert(2, 1)    # 在索引1处插入2
linked_list.insert(3, 2)    # 在索引2处插入3
print(linked_list)          # 打印链表:1 -> 2 -> 3

5. 删除节点

删除节点操作也包含三个步骤:找到要删除的节点前一个节点,将前一个节点的next指向要删除节点的next,将要删除节点的next指向None。代码如下:

def remove(self, index):
    if index < 0 or index >= self.size:
        raise Exception("Index out of range")
    if index == 0:
        self.head = self.head.next
    else:
        p = self.head
        for i in range(index - 1):
            p = p.next
        p.next = p.next.next
    self.size -= 1

删除节点的示例:

linked_list = LinkedList()
linked_list.insert(1, 0)
linked_list.insert(2, 1)
linked_list.insert(3, 2)
linked_list.remove(1)       # 删除索引1处的节点
print(linked_list)          # 打印链表:1 -> 3

6. 获取节点

获取节点操作只需要循环遍历链表直到找到指定索引处的节点即可。代码如下:

def get(self, index):
    if index < 0 or index >= self.size:
        raise Exception("Index out of range")
    p = self.head
    for i in range(index):
        p = p.next
    return p.data

获取节点的示例:

linked_list = LinkedList()
linked_list.insert(1, 0)
linked_list.insert(2, 1)
linked_list.insert(3, 2)
print(linked_list.get(1))   # 输出1

以上就是“python版本单链表实现代码”的完整攻略,希望能对你有所帮助。

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

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

相关文章

  • Linux服务器怎么修改密码 passwd命令用法

    下面是“Linux服务器怎么修改密码 passwd命令用法”的完整攻略。 简介 passwd命令是Linux服务器中用来修改密码的命令,它可以修改当前用户的密码,也可以修改其他用户的密码。passwd命令是一个重要的命令,因为它可以保障系统的安全性。 语法 passwd [选项] [用户] 其中,选项和用户均为可选。 选项包括: -a:将密码信息存储到指定文…

    other 2023年6月26日
    00
  • Java数据结构与算法之栈(Stack)实现详解

    Java数据结构与算法之栈(Stack)实现详解 1. 栈的概念及用途 栈(Stack)是一种线性数据结构,它具有“后进先出(Last In First Out, LIFO)”的特点。栈可以看成是一种特殊的列表,列表中的元素只能通过栈顶加入或删除,称为入栈和出栈。 栈的应用非常广泛,例如在函数调用时,系统会自动为每个函数创建一个栈,用于存储函数调用过程中产生…

    other 2023年6月27日
    00
  • win11怎么剪切文件并粘贴? win11系统复制剪切粘贴的使用方法

    Win11如何剪切文件并粘贴 剪切文件 剪切是指将选定的文件或文件夹从原来的位置移动到剪贴板上,等待粘贴到另一个位置。Win11系统中,剪切文件的方法如下: 首先选中需要剪切的文件或文件夹,可以通过鼠标左键单击或者键盘上的Shift键加上方向键进行多选。 选中文件后,可以使用快捷键Ctrl+X进行剪切,或者通过右键菜单选择“剪切”选项。 示例:比如需要将D盘…

    other 2023年6月27日
    00
  • css样式底部平均分布

    CSS样式底部平均分布 在网站开发过程中,我们经常需要将一排元素展示在页面底部,比如页脚链接、社交媒体图标等等。而如果我们希望这些元素在底部平均分布,应该怎么做呢? 下面,我们来介绍一种简单易用的CSS样式,可以轻松地实现底部元素平均分布的效果。 使用Flex布局 CSS3引入的弹性盒子布局(Flexbox)为我们提供了更加便捷的布局方式。下面的代码片段展示…

    其他 2023年3月28日
    00
  • 浅析c#中WebBrowser控件的使用方法

    浅析c#中WebBrowser控件的使用方法 前言 在 C# 中,使用 WebBrowser 控件可以实现浏览网页、访问 Web 服务等功能。在本文中,我们将详细介绍 WebBrowser 控件的使用方法,包括如何设置控件属性、如何调用控件方法、如何处理控件事件等。 开始使用 WebBrowser 控件 步骤一:添加控件 在 Visual Studio 中,…

    other 2023年6月27日
    00
  • IIS 7.0 部署MVC

    IIS 7.0 部署MVC 在使用ASP.NET MVC架构开发Web应用程序时,最关键的部分之一就是程序的部署。本文将介绍如何在IIS 7.0上部署MVC应用程序。 准备工作 在开始部署之前,需要确保以下环境已经准备就绪: IIS 7.0已安装 ASP.NET MVC运行时已安装 部署包已生成 操作步骤 将部署包文件复制到Web服务器上的特定目录中,例如”…

    其他 2023年3月28日
    00
  • win11错误代码0xA00F4288怎么修复? 修复相机应用程序错误的方法

    win11错误代码0xA00F4288怎么修复? 如果你在win11系统中使用相机应用程序时,遇到了0xA00F4288错误代码,那么应该如何修复呢?下面我将给出修复相机应用程序错误的方法,以及两个实例说明。 修复相机应用程序错误的方法 以下是修复win11相机应用程序错误的方法步骤: 首先,你需要打开“设备管理器”。 找到你的相机,右键单击该设备并选择“属…

    other 2023年6月25日
    00
  • 联通光猫HG8321R怎么破解? 华为hg8321开启路由功能的技巧

    联通光猫HG8321R的破解攻略 一、前置知识 在开始之前,需要了解以下一些基础知识: 什么是光猫光猫是指光纤调制解调器,是光纤宽带网络终端设备,主要功能是将光纤接入用户的家庭或办公室,转换为家庭或办公室内的网线信号,用于连接电脑、路由器等终端设备。 什么是路由器路由器是一种网络设备,能够将各种不同的网络连接在一起组成互联网。它可以将来自网络的数据进行分配和…

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