python算法与数据结构之单链表的实现代码

下面是详细讲解“Python算法与数据结构之单链表的实现代码”的完整攻略,包括节点类的定义、链表类的定义、节点的插入、删除和查找等操作,以及两个示例说明。

节点类的定义

节点类表示单链表的节点,包括节点值和下一个节点指针。以下是Python实现节点类的示例代码:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

上述代码中,定义了一个ListNode类,包括节点值val和下一个节点的指针next。如果没有指定下一个节点,则默认为None。

链表类的定义

链表类表示单链表,包括头节点和链表长度。以下是Python实现链表类的示例代码:

class LinkedList:
    def __init__(self):
        self.head = ListNode()
        self.length = 0

上述代码中,定义了一个LinkedList类,包括头节点head和链表长度length。头节点不包含任何值,只是一个指向第一个节点的指针。

节点的插入

节点的插入是单链表中的一种基本操作,可以在链表的任意位置插入一个新节点。以下是Python实现节点插入的示例代码:

class LinkedList:
    def __init__(self):
        self.head = ListNode()
        self.length = 0

    def insert(self, index, val):
        if index < 0 or index > self.length:
            return False
        node = ListNode(val)
        cur = self.head
        for i in range(index):
            cur = cur.next
        node.next = cur.next
        cur.next = node
        self.length += 1
        return True

上述代码中,定义了一个insert方法,接受一个索引index和一个值val作为参数。在循环中,找到要插入的位置,将新节点插入到该位置。如果索引超出链表范围,则返回False。插入成功后链表长度加1,并返回True。

节点的删除

节点的删除是单链表中的一种基本操作,可以删除链表中的任意节点。以下是Python实现节点删除的示例代码:

class LinkedList:
    def __init__(self):
        self.head = ListNode()
        self.length = 0

    def delete(self, index):
        if index < 0 or index >= self.length:
            return False
        cur = self.head
        for i in range(index):
            cur = cur.next
        cur.next = cur.next.next
        self.length -= 1
        return True

上述代码中,定义了一个delete方法,接受一个索引index作为参数。在循环中,找到要删除的前一个节点,将其指针指向要删除节点的下一个节点。如果索引超出链表范围,则返回False。删除成功后,链表长度减1,并返回True。

节点的查找

节点的查找是单链表中的一种基本操作,可以查找链表的任意节点。以下是Python实现节点查找的示例代码:

class LinkedList:
    def __init__(self):
        self.head = ListNode()
        self.length = 0

    def search(self, val):
        cur = self.head.next
        index = 0
        while cur:
            if cur.val == val:
                return index
            cur = cur.next
            index += 1
        return -1

上述代码中,定义了一个search方法,接受一个值val作为参数。在循环中,逐个比较节点的值,如果找到目标节点,则返回其索引。如果遍历完整个链表仍未找到目标节点,则返回-1。

示例说明

以下是两个示例,说明如何使用LinkedList类进行节点的插入、删除和查找操作。

示例1

创建一个空链表,插入三个节点,分别为1、2、3。

lst = LinkedList()
lst.insert(0, 1)
lst.insert(1, 2)
lst.insert(2, 3)

输出结果:

1 -> 2 -> 3

示例2

创建一个链表,删除第二个节点,查找值为3的节点的索引。

lst = LinkedList()
lst.insert(0, 1)
lst.insert(1, 2)
lst.insert(2, 3)
lst.delete(1)
index = lst.search(3)
print(index)

输出结果:

2

总结

本文介绍了Python实现单链表的实现代码,包括节点类的定义、链表类的定义、节点的插入、删除和查找等操作。单链表是一种常见的数据结构,可以用于解决各种问题。在实际应用中,需要根据实际情况选择合适的结构和算法,以获得更好的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python算法与数据结构之单链表的实现代码 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python中random模块详解

    Python是一种非常流行的编程语言,在Python的世界里,有很多实用的模块来帮助我们更加高效地完成任务。其中一个非常常用的模块就是random模块,下面我就来为大家详细讲解一下Python中random模块的使用。 一、模块介绍 Python的random模块用于生成伪随机数,可用于模拟、密码学等领域。 二、常用函数 random模块提供了一些常用函数,…

    python 2023年6月3日
    00
  • Python实现获取某天是某个月中的第几周

    要实现获取某天是某个月中的第几周,可以使用Python内置的datetime模块。下面是详细步骤: 首先导入datetime模块: import datetime 定义要查询的日期。 date_to_check = datetime.datetime(2021, 10, 22) 这里示范查询2021年10月22日,可以根据自己的需要修改年、月、日。 使用da…

    python 2023年6月2日
    00
  • Python实现的json文件读取及中文乱码显示问题解决方法

    下面是详细讲解Python实现的json文件读取及中文乱码显示问题解决方法的攻略。 一、Json文件读取方法 在Python中读取json文件需要使用到json库,具体实现步骤如下: 导入json库:import json 打开json文件:with open(‘file.json’, ‘r’, encoding=’utf-8′) as f: file.js…

    python 2023年5月20日
    00
  • python解释模型库Shap实现机器学习模型输出可视化

    Python解释模型库Shap实现机器学习模型输出可视化 Shap是一个Python解释模型库,用于可视化和解释机器学习模型的决策。通过Shap库,我们可以理解每个特征对模型预测的影响力和重要性。在本文中,我们将讲解如何使用Shap库创建可视化图来理解和解释机器学习模型。 安装Shap 首先,我们需要安装Shap。可以使用pip命令安装Shap。 pip i…

    python 2023年5月18日
    00
  • 如何为 gdb 安装 python 调试信息?

    【问题标题】:How to install python debug-info for gdb?如何为 gdb 安装 python 调试信息? 【发布时间】:2023-04-06 12:32:02 【问题描述】: 我想使用gdb 来调试python 脚本。启动gdb后,输出: [root@localhost scripts]# gdb python GNU …

    Python开发 2023年4月7日
    00
  • 用Python计算三角函数之acos()方法的使用

    当我们需要计算三角函数时,acos()方法是非常有用的。acos()方法是Python 的标准数学库中的一部分,它可以计算给定角度的反余弦值,返回值范围是0-π。 以下是使用acos()方法计算三角函数的完整攻略: 1.引入math模块 首先,在使用acos()方法之前,需要引入Python的标准数学库 – math。代码如下所示: import math …

    python 2023年6月3日
    00
  • Python使用pandas导入xlsx格式的excel文件内容操作代码

    下面是“Python使用pandas导入xlsx格式的excel文件内容操作代码”的完整实例教程。 1. 导入需要的库 import pandas as pd 2. 读取Excel文件 使用pandas的read_excel()函数可以读取Excel文件。该函数的参数包括文件名、sheet名以及其他一些配置信息。 df = pd.read_excel(‘ex…

    python 2023年5月13日
    00
  • 解决pyecharts在jupyter notebook中使用报错问题

    接下来我将为你详细讲解如何解决在jupyter notebook中使用pyecharts报错的问题。 步骤一:安装依赖项 在使用pyecharts之前,需要安装一些必要的依赖项,如下所示: pip install pyecharts pip install jupyter notebook pip install notebook 步骤二:安装并启用jupy…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部