python版本单链表实现代码

yizhihongxing

让我来详细讲解一下“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日

相关文章

  • CAD文档怎么快速自定义图纸标题栏?

    当需要快速生成CAD图纸时,自定义图纸标题栏可以帮助我们节省时间和提高工作效率。下面是具体的操作步骤和示例说明: 1. 打开CAD文档 首先,双击打开你需要进行自定义标题栏的CAD文档。 2. 制作自定义标题栏 接下来,我们需要进行自定义标题栏的制作。具体步骤如下: 2.1 新建一个图层 我们需要新建一个图层并将其命名为Title Bar。 LA //输入L…

    other 2023年6月25日
    00
  • Android通用LoadingView加载框架详解

    Android通用LoadingView加载框架详解 什么是LoadingView LoadingView是Android开发中常用的展示等待状态的一种控件,它可以在页面加载数据的过程中显示出一个等待动画,让用户知道页面正在工作,避免用户因等待而产生焦虑情绪。 加载框架的实现方式 在Android中实现LoadingView的方式有很多种,常用的有以下几种方…

    other 2023年6月25日
    00
  • 前端存储

    前端存储 前端存储是指在浏览器端存储数据的技术,它可以使网页在不同的浏览器和设备之间共享数据,提高用户体验。本文将详细介绍前端存储的几种方式,包括Cookie、localStorage、sessionStorage和IndexedDB,并提供示例说明。 Cookie Cookie是一种在浏览器存储数据的技术,它可以存储少量的数据,并在浏览器和服务器之间传递数…

    other 2023年5月9日
    00
  • notepad++:正则表达式系统教程

    以下是详细讲解“notepad++:正则表达式系统教程的完整攻略”的标准Markdown格式文本,包含两个示例说明: Notepad++:正则表达式系统程的完整攻略 Notepad++是一款免费的文本编辑器,支持正则表达式搜索和替换。本攻略将介绍Notepad++中正则表达式的基本语法、常用元字符和示例说明等内容。 基本语法 Notepad++中正则表达式的…

    other 2023年5月10日
    00
  • 【python标准库模块一】时间模块time学习

    【Python标准库模块一】时间模块time学习的完整攻略 时间模块time是Python标准库中的一个重要模块,它提供了一些函数,用于处理时间和日期。本文将为您提供一份详细的时间模块time学习的完整攻略,包括时间模块time的基本概念、使用方法和两个示例说明。 时间模块time的基本概念 时间模块time是Python标准库中的一个模块,它提供了一些函数…

    other 2023年5月5日
    00
  • Java中获得当前静态类的类名

    Java中获得当前静态类的类名的完整攻略 在Java中,可以使用反射机制获取当前静态类的类名。本文将为您提供一份完整攻略,包括两个示例说明。 反射机制 反射机制是Java中的一种机制,可以在运行时获取类的信息,并动态地创建对象、调用方法等。反射机制可以实现动态加载类、动态调用方法等功能。 获取当前静态类的类名 在Java中,可以使用反射机制获取当前静态类的类…

    other 2023年5月5日
    00
  • C++ using namespace std 用法深入解析

    下面是关于”C++ using namespace std 用法深入解析”的完整攻略。 1. 什么是using namespace std? 在C++中,标准库被命名为std。当我们使用标准库时,需要在代码中使用前缀“std::”来指示我们要使用的库。用using namespace std就能够避免在代码中频繁地使用“std::”。 关于using nam…

    other 2023年6月27日
    00
  • Mysql环境变量配置的详细图文教程

    Mysql是一个非常流行的关系型数据库管理系统,许多项目都需要使用它。在使用Mysql之前,需要先进行环境变量配置,以便在命令行中快速调用Mysql。 以下是Mysql环境变量配置的详细图文教程: 第一步:下载并安装Mysql 首先,需要从官方网站 [https://dev.mysql.com/downloads/mysql/] 下载对应版本的Mysql,并…

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