广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现单向链表
  • 743
分享到

Python实现单向链表

2024-04-02 19:04:59 743人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。 单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头

单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。

单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头指针相当重要!!!)

使用python实现单向链表,我们可以使用一个节点类来封装节点,每创建一个节点就生成一个节点类的实例。

这里主要实现了单向链表节点的遍历、添加、插入、删除,反转。

代码如下:

class Player:
    """节点类"""
    def __init__(self):
        """初始化姓名,分数,指针"""
        self.name = ''
        self.score = 0
        self.next = None
 
 
def erGodic(head, num=None, is_print=False):
    """遍历函数,num是遍历到哪一个位置序号,is_print是否触发打印方法"""
    ptr = head
    count = 0
    while True:
        if num == count:
            break
        if ptr.next:
            count += 1
            ptr = ptr.next
            if is_print:
                print('No.'+str(count), ptr.name, ptr.score, '--->', ptr.next.name if ptr.next else None)
        else:
            break
    return ptr  # 返回遍历完成后的最后一个节点
 
 
def invert(x):  # x是链表的第一个节点(即head的指针的指向)
    """反转链表"""
    y = x.next  # y是x原来的next
    if y is None:  # y等于None表示当前链表只有一个节点
        return x
    x.next = None  # 将第一个节点的next指向None(因为反转了)
    while True:  # 循环反转后面的所有节点
        r = y.next
        y.next = x
        if r is None:  # r是None说明y已经是原本链表的最后一个节点了
            return y  # 返回y,这个y是反转后的链表的第一个节点
        x = y
        y = r
 
 
head = Player()
 
 
while True:
    select = input("(1).新增   (2).查看   (3).插入   (4).删除   (5).反转   (6).离开\n输入:")
    if select == "1":  # 新增节点
        ptr = ergodic(head)  # 获取当前链表最后一个节点
        next_data = Player()  # 创建一个新节点
        next_data.name = input("姓名:")
        next_data.score = input("分数:")
        next_data.next = None
        ptr.next = next_data  # 连接节点
        
    elif select == "2":  # 遍历查看链表所有节点
        print("所有数据显示如下:")
        ergodic(head, is_print=True)  # 遍历链表,将打印参数设为True
        
    elif select == '3':  # 向链表中任意位置插入节点,位置以序号表示,即第一个节点序号为1,第二个节点序号为2,以此类推
        try:
            num = int(input("请输入需要插入的节点位置序号:"))  # 输入序号必须是大于0的正整数,如果输入大于最后一个节点的序号则插入到最后一个节点之后
            if num < 1:
                print("输入必须为大于0的正整数")
                continue
        except ValueError:
            print("输入有误")
            continue
        ptr = ergodic(head, num-1)  # 获取需要插入位置的前一个节点
        insert_data = Player()
        insert_data.name = input("姓名:")
        insert_data.score = input("分数:")
        insert_data.next = ptr.next
        ptr.next = insert_data
        
    elif select == '4':  # 删除链表中任意位置的节点
        try:
            num = int(input("请输入需要删除的节点位置序号:"))  # 输入序号必须是大于0的正整数,如果输入大于最后一个节点的序号则删除最后一个节点
            if num < 1:
                print("输入必须为大于0的正整数")
                continue
        except ValueError:
            print("输入有误")
            continue
        ptr = ergodic(head, num - 1)  # 获取需要删除位置的前一个节点
        ptr.next = ptr.next.next
        
    elif select == '5':  # 反转链表
        new_first = invert(head.next)  # 获取新的第一个节点
        head.next = new_first  # head指向新的第一个节点
        print('成功反转')
        
    elif select == '6':
        print("成功离开")
        break
    else:
        print("输入错误,请重试")

部分运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Python实现单向链表

本文链接: https://www.lsjlt.com/news/118299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现单向链表
    单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。 单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头...
    99+
    2022-11-11
  • python怎么实现单向链表及单向链表的反转
    这篇文章给大家分享的是有关python怎么实现单向链表及单向链表的反转的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。链表的定义链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息...
    99+
    2023-06-14
  • python如何实现单向链表及单向链表的反转
    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init_...
    99+
    2022-11-12
  • python中的单向链表实现
    目录一、单向链表概念二、建立节点对象三、链表对象的初始定义四、判断链表是否为空五、获取链表长度六、向头部添加节点七、向尾部添加节点八、指定位置插入节点九、删除指定位置的节点十、查找是...
    99+
    2022-11-13
  • python单向链表怎么实现
    这篇文章主要介绍“python单向链表怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python单向链表怎么实现”文章能帮助大家解决问题。单向链表:是将所有的数据作为一个个节点,将所有的节点...
    99+
    2023-06-30
  • 浅谈Python单向链表的实现
    链表由一系列不必在内存中相连的结构构成,这些对象按线性顺序排序。每个结构含有表元素和指向后继元素的指针。最后一个单元的指针指向NULL。为了方便链表的删除与插入操作,可以为链表添加一个表头。 删除操作可以...
    99+
    2022-06-04
    浅谈 链表 Python
  • python单向链表的实现方法
    这篇文章主要介绍了python单向链表的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(...
    99+
    2023-06-14
  • 怎么用Python实现单向链表
    这篇文章主要介绍“怎么用Python实现单向链表”,在日常操作中,相信很多人在怎么用Python实现单向链表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现单向链表”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • python单向循环链表怎么实现
    单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链接区,数据区存储数据,链接区链接下一个节点item: 存储数据的地方next: 链接下一个节点注意: 单向循环链表是首位链接,即尾部的节点要和头部的节点链接单向链表操作1、链表是否...
    99+
    2023-05-16
    Python
  • python中的单向链表怎么实现
    这篇文章主要介绍了python中的单向链表怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中的单向链表怎么实现文章都会有所收获,下面我们一起来看看吧。一、单向链表概念单向链表的链接方向是单向的...
    99+
    2023-06-29
  • python单向循环链表如何实现
    本篇内容主要讲解“python单向循环链表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python单向循环链表如何实现”吧!单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链...
    99+
    2023-07-06
  • python单向链表实例详解
    使用python实现单向链表,供大家参考,具体内容如下 单向链表:是将所有的数据作为一个个节点,将所有的节点链接在一起。每一个节点中又分为: 存储数据区,链接区 存储数据区: 存储具...
    99+
    2022-11-11
  • Python实现双向链表
    之前写的单向链表和环形链表都只是单向的,只能单向遍历,不能根据后面的节点获取前面的节点,除非进行反转操作。 双向链表每个节点都有两个指针,这两个指针分别指向前后两个节点,这样就可以从...
    99+
    2022-11-11
  • python实现单链表
    #encoding:utf-8 import sys class Lnode():     def __init__(self,elem,next=None):         self.elem = elem    #节点的值   ...
    99+
    2023-01-31
    链表 python
  • python 实现线性链表(单链表)
    初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。 #!/usr/bin/python # -*- coding:utf-8 -*- # Author: Hui # Date: 2017-10-13...
    99+
    2023-01-31
    链表 线性 python
  • Java数据结构之链表实现(单向、双向链表及链表反转)
    前言 之前学习的顺序表查询非常快,时间复杂度为O(1),但是增删改效率非常低,因为每一次增删改都会元素的移动。可以使用另一种存储方式-链式存储结构。 链表是一种物理存储单元上非连续、...
    99+
    2022-11-12
  • python单链表的实现
    ''' 当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next) head = item = tail = Node(object element1 memory) item = hea...
    99+
    2023-01-31
    链表 python
  • python单向循环链表实例详解
    使用python实现单向循环链表,供大家参考,具体内容如下 单向循环链表 将所有的链接在一起,每一个节点分为数据存储区和链接区,数据区存储数据,链接区链接下一个节点 item: 存储...
    99+
    2022-11-11
  • Python实现的单向循环链表功能示例
    本文实例讲述了Python实现的单向循环链表功能。分享给大家供大家参考,具体如下: 概述: 单向循环链表是指在单链表的基础上,表的最后一个元素指向链表头结点,不再是为空。 由图可知,单向循环链表的判断条件...
    99+
    2022-06-04
    示例 链表 功能
  • Python 实现双向链表(图解)
    双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。 双向链表基本方法实现(Python) 1...
    99+
    2023-01-31
    双向 链表 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作