Python实现单向链表

yizhihongxing

Python实现单向链表

单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点指针。本文将介绍如何使用Python实现单向链表。

实现步骤

步骤一:定义节点类

首先,我们需要定义一个节点类,用于表示单向链表中的每个节点。节点类包含两个属性:data和next。data表示节点中存储的数据,next表示指向下一个节点的指针。下面是一个示例,演示了如何定义节点类:

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

在这个例子中,我们定义了一个节点类Node,包含两个属性:data和next。其中,data表示节点中存储的数据,next表示指向下一个节点的指针。我们使用构造函数__init__()来初始化节点对象。

步骤二:定义单链表类

接下来,我们需要定义一个单向链表类,用于表示整个单向链表。单向链表类包含一个头head,用于指向链表中的第一个节点。下面是一个示例,演示了如何定义单向链表类:

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

在这个例子中,我们定义了一个单向链表类,包含一个头节点head。我们使用构造函数__init__()来初始化单向链表对象。

步骤三:实现单向链表的基本操作

在定义了节点类和单向链表类之后,我们需要实现单向链的基本操作,包括插节点、删除节点、查找节点等。下面是一个示例演示了如何实现单向链表的基本操作:

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

    # 在链表头部插入节点
    def insert_at_beginning(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    # 在链表尾部插入节点
    def insert_at_end(self, data):
        new_node = Node(data)
        if self.head is None:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = new_node

    # 删除节点
    def delete_node(self, key):
        current_node = self.head
        if current_node and current_node.data == key:
            self.head = current_node.next
            current_node = None
            return
        prev_node = None
        while current_node and current_node.data != key:
            prev_node = current_node
            current_node = current_node.next
        if current_node is None:
            return
        prev_node.next = current_node.next
        current_node = None

    # 查找节点
    def search_node(self, key):
        current_node = self.head
        while current_node:
            if current_node.data == key:
                return True
            current_node = current_node.next
        return False

    # 输出链表
    def print_list(self):
        current_node = self.head
        while current_node:
            print(current_node.data)
            current_node = current_node.next

在这个例子中,我们实现了单向链表的基本操作,包括在链表头部插节点在链表尾部插入节点、删除节点、查找节点和输出链表。我们使用insert_at_beginning()方法在链表头部插入节点,使用insert_at_end()方法在链表尾部插入节点,使用delete_node()方法删除节点,使用search_node()方法查找节点,使用print_list()方法输出链表。

示例

示例一:创建单向链表并输出

# 创建单向链表并输出
linked_list = LinkedList()
linked_list.insert_at_beginning(1)
linked_list.insert_at_end(2)
linked_list.insert_at_end(3)
linked_list.insert_at_end(4)
linked_list.print_list()

在这个例子中,我们创建了一个单向链表,并在链表中插入了四个节点。然后,我们使用print_list()方法输出链表。输出结果为:

1
2
3
4

从输出结果可以看出我们成功地创建了单向链表并输出。

示例二:删除单向链表中的节点

# 删除单向链表中的节点
linked_list = LinkedList()
linked_list.insert_at_beginning(1)
linked_list.insert_at_end(2)
linked_list.insert_at_end(3)
linked_list.insert_at_end(4)
linked_list.delete_node(3)
linked_list.print_list()

在这个例子中,我们创建了一个单向链表,并在链表中插入了四个节点。然后,我们使用delete_node()方法删除了3,并使用print_list()方法输出链表。输出结果为:

1
2
4

从输出结果可以看出,我们成功地删除了单向链表中的节点。

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

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

相关文章

  • Python中关于集合的介绍与常规操作解析

    Python中关于集合的介绍与常规操作解析 什么是集合 集合是一种无序、不重复的容器,它是Python语言中的一种基本数据类型。集合中的元素不能重复,且不保证元素存储的顺序。 如何创建集合 可以使用set()函数或者使用花括号{}来创建一个集合。 # 使用set()函数创建一个集合 my_set = set([1, 2, 3]) print(my_set) …

    python 2023年6月3日
    00
  • Python爬虫获取数据保存到数据库中的超详细教程(一看就会)

    下面我将为您详细讲解“Python爬虫获取数据保存到数据库中的超详细教程(一看就会)”这篇文章的内容。 一、前置知识 在学习这篇文章之前,您需要掌握以下知识: Python基础语法 数据库基础知识 爬虫基础知识 如果您还不熟悉以上知识,可以先学习一下相关的教程。 二、Python爬虫获取数据保存到数据库中的步骤 确定需要爬取的网站和数据 首先,我们需要确定需…

    python 2023年5月14日
    00
  • 零基础写python爬虫之神器正则表达式

    零基础写Python爬虫之神器正则表达式 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。在Python爬虫中,正则表达式常用于解析HTML页面,提取所需的数据。本攻略将详细讲解正则表达式的基本用法、常用符号和示例应用。 基本用法 Python中使用re模块提供的函数来操作正则表达式。常用函数: re.search(pattern, str…

    python 2023年5月14日
    00
  • Pycharm激活方法及详细教程(详细且实用)

    Pycharm激活方法及详细教程 概述 Pycharm是一款常用的Python开发IDE,但它需要购买授权才能解锁全部功能。本教程将介绍Pycharm的激活方法以及详细教程,帮助用户免费使用Pycharm的全部功能。 Pycharm激活方法 第一步:下载Pycharm 在官网下载Pycharm的社区版或专业版,下载完毕后进行安装。下载链接:https://w…

    python 2023年5月18日
    00
  • python中的参数类型匹配提醒

    我来为您详细讲解“python中的参数类型匹配提醒”的攻略。 什么是参数类型匹配提醒 当我们在编写Python代码时,常常会出现参数类型不匹配导致程序运行出错的情况。为了避免这种情况发生,可以在函数定义时添加类型注解,从而在函数调用时提醒开发者合适的参数类型。 如何使用参数类型匹配提醒 使用参数类型匹配提醒非常简单,只需要在函数参数前加上参数类型注解即可。例…

    python 2023年5月14日
    00
  • Python自动发邮件脚本

    下面将为您详解”Python自动发邮件脚本”的完整攻略。 前置知识 在学习Python自动发邮件脚本之前,您需要掌握以下技能: Python基础语法 smtplib模块的基本使用 使用SMTP协议发送邮件的基本流程 发送邮件原理 发送邮件的原理是通过SMTP协议,将邮件服务器作为客户端连接到邮件服务器,并进行身份验证后,利用sendmail()方法,将邮件发…

    python 2023年5月19日
    00
  • 详细介绍Python中的set集合

    详细介绍Python中的set集合 简介 set是Python的一种数据结构,类似于数学中的集合概念。set中可以存储多个元素,但每个元素必须是唯一的,即不能出现重复元素。 set是无序的,不能通过下标进行访问,但是可以遍历set中所有元素。 set可以进行交集、并集、差集等操作,是处理相同数据的好工具。 创建set 可以通过以下两种方式创建set: 直接创…

    python 2023年5月13日
    00
  • 如何解决这个 python 和 django 设置导入特性?

    【问题标题】:How can I resolve this python and django settings import idiosyncrasy?如何解决这个 python 和 django 设置导入特性? 【发布时间】:2023-04-07 15:14:01 【问题描述】: 我有这样的文件布局:settings/—-__init__.py—…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部