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

yizhihongxing

下面是详细讲解“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利用google翻译方法实例(翻译字幕文件)

    标题:Python利用Google翻译方法实例(翻译字幕文件) 正文: Google翻译是一款强大的自然语言处理工具,它可以翻译多种语言的文本。Python语言通过调用Google翻译API可以实现自动翻译文本或者字幕文件。以下是基于Python实现调用Google翻译API的示例代码。 安装依赖库 Google翻译API需要使用googletrans库对文…

    python 2023年6月3日
    00
  • Python函数关键字参数及用法详解

    Python函数关键字参数及用法详解 什么是关键字参数? Python函数除了普通的位置参数外,还可以使用关键字参数。所谓关键字参数,就是指在函数调用时,使用参数名来给函数传递参数值,这种方式既方便又易于理解。 关键字参数由参数名和参数值组成,以参数名=参数值的形式传递。关键字参数必须在普通参数之后传递,否则会引发语法错误。 一个函数可以接受多个关键字参数,…

    python 2023年6月5日
    00
  • pyCharm 设置调试输出窗口中文显示方式(字符码转换)

    PyCharm是一款Python开发的强大IDE工具,但是在中文输出方面存在一些问题。在调试模式下,输出窗口中文显示可能不正常,这时需要进行字符码转换。 以下是在PyCharm中设置调试输出窗口中文显示方式的完整攻略: 打开PyCharm软件,点击“File -> Settings”进入设置页面。 在左侧面板中选择“Editor -> File …

    python 2023年5月20日
    00
  • python批量读取txt文件为DataFrame的方法

    下面是“python批量读取txt文件为DataFrame的方法”的完整攻略,包括以下步骤: 步骤一:准备数据 首先需要获得一些示例数据,这些示例数据应该存在于多个.txt文件中。这些文件应该具有相同的格式,可以包含标头和数据,以制表符或其他分隔符分隔。 步骤二:导入必要的库 在使用本方法之前,需要导入pandas库。可以使用以下命令导入pandas: im…

    python 2023年6月2日
    00
  • Python 通过requests实现腾讯新闻抓取爬虫的方法

    Python 通过requests实现腾讯新闻抓取爬虫的方法 介绍 Python是一种非常常用的编程语言,requests模块是Python的一个第三方库,可用于发送HTTP请求。这篇文章将会介绍如何使用这个库实现腾讯新闻的爬取。 步骤 导入requests库 在Python中,想要使用requests库,需要先安装并导入这个库。可以执行以下命令来完成导入:…

    python 2023年5月14日
    00
  • Python txt文件如何转换成字典

    下面我来详细讲解一下 “Python txt 文件如何转换成字典” 的攻略。 1. 读取 txt 文件 首先需要读取 txt 文件的内容,这可以通过 Python 的文件操作实现。你需要使用 open() 函数打开 txt 文件,指定读取模式,并使用 read() 函数将文件内容读取为字符串。 示例代码如下: with open(‘example.txt’,…

    python 2023年5月13日
    00
  • Python – 如何使用 PySAL 计算交互式空间自相关 (Moran I)?

    【问题标题】:Python – How do I compute interactive spatial autocorrelation (Moran I) using PySAL?Python – 如何使用 PySAL 计算交互式空间自相关 (Moran I)? 【发布时间】:2023-04-04 11:05:01 【问题描述】: 我在 PostgreSQ…

    Python开发 2023年4月6日
    00
  • python中的lambda函数用法指南

    Python中的Lambda函数用法指南 Lambda函数是Python中的一种匿名函数,它可以在不定义函数名称的情况下创建一个简单的函数。Lambda函数通常用于需要一个简单函数的地方,例如作为参数传递给高阶函数。本文将介绍Lambda函数的用法,包括语法、示例和常见用途。 Lambda函数的语法 Lambda函数的语法非常简单,它由关键字lambda、参…

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