广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python递归&迭代方法实现链表反转
  • 359
分享到

python递归&迭代方法实现链表反转

2024-04-02 19:04:59 359人浏览 独家记忆

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

摘要

定义链表node结构: class Listnode:       def __init__(self,data):         self.data = data        

定义链表node结构:

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

将L转化为链表:

def make_list(L):

将L初始化为链表:

  head = ListNode(L[0])
    cur = head
    for i in L[1:]:
        cur.next = ListNode(i)
        cur = cur.next
    return head
 

遍历链表:

def print_list(head):
 
    cur = head
    while cur != None:
        print(cur.data,end=' ')
        cur = cur.next
 

递归法  反转链表:

def reverse_list(head):

三要素:

  • 1.明确函数功能,该函数可以将链表反转,并返回一个头节点
  • 2.结束条件:当链表为空或只有一个节点时返回
    if head==None or head.next==None:
        return head
  • 3.等价条件(缩小范围),对于数组来讲,缩小范围是n——>n-1,对于链表来讲则可以考虑head——
>head.next
    reverse = reverse_list(head.next)  #假设reverse是head以后的、已经反转过的链表

接下来要做的是将head节点接到已经反转过的reverse上:

    tmp = head.next
    tmp.next = head
    head.next = None
 return reverse  #返回新的列表

迭代法:

def reverse_list2(head):
    #print_list(head)
    cur = head
    pre = None
    while cur:
        tmp = cur.next
        cur.next = pre
        pre = cur
        cur = tmp
    head = pre
    return head
 
if __name__ == '__main__':
 
    L = [3,2,7,8]
    head = make_list(L)
 

正序打印:

    print('原始list:')
    print_list(head)
    print('\n')
 

反转后打印:

    revere = reverse_list(head)
    print('反转一次的list:')
    print_list(revere)
    print('\n')
 

反转2:

    print('head is')
    print_list(head)  #发现此时head节点变成了最后一个节点,说明函数是对head这个实例直接作用的
    print('\n')
 
    # print('revere is')
    # print_list(revere)
    # print('\n')
 
    print('反转两次的list:')
    print_list(reverse_list2(revere))

到此这篇关于python递归&迭代方法实现链表反转的文章就介绍到这了,更多相关Python链表反转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python递归&迭代方法实现链表反转

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

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

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

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

下载Word文档
猜你喜欢
  • python递归&迭代方法实现链表反转
    定义链表node结构: class ListNode:       def __init__(self,data):         self.data = data        ...
    99+
    2022-11-13
  • python中如何用递归与迭代方法实现链表反转
    这篇文章主要讲解了“python中如何用递归与迭代方法实现链表反转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中如何用递归与迭代方法实现链表反转”吧!定义链表node结构:cl...
    99+
    2023-06-29
  • python递归实现链表快速倒转
    本文实例为大家分享了python递归实现链表快速倒转的具体代码,供大家参考,具体内容如下 案例:实现如下链表进行倒转 源代码: ''' Node 用于表示队列中的节点;它包含两个域...
    99+
    2022-11-10
  • 聊聊golang怎么用递归实现反转链表
    在golang中,反转链表可以使用递归来实现。在递归函数中,我们首先需要将当前节点的下一个节点作为参数传入递归函数,然后让当前节点指向下一个节点的下一个节点。最后返回递归函数的返回值,即新的头节点。以下是使用递归实现反转链表的golang代...
    99+
    2023-05-14
  • 如何使用PHP递归实现链表的反转操作
    链表是一种非常常见的数据结构,是由一系列节点组成的集合,每个节点包含一个数据项和指向下一个节点的指针。链表可以用来实现栈、队列、哈希表等数据结构,并且在算法题中也常常遇到。在许多算法问题中,需要对链表进行反转操作。反转链表的基本思路是将链表...
    99+
    2023-05-14
    php
  • 怎么使用PHP递归实现链表的反转操作
    本文小编为大家详细介绍“怎么使用PHP递归实现链表的反转操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用PHP递归实现链表的反转操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现方法在递归反转链表...
    99+
    2023-07-05
  • 怎么用python递归实现链表快速倒转
    这篇文章主要介绍“怎么用python递归实现链表快速倒转”,在日常操作中,相信很多人在怎么用python递归实现链表快速倒转问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python递归实现链表快速倒转...
    99+
    2023-06-30
  • Python实现链表反转的方法是什么
    本篇内容主要讲解“Python实现链表反转的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python实现链表反转的方法是什么”吧!Python实现链表反转链表反转(while迭代实现...
    99+
    2023-06-02
  • C++实现反转链表的两种方法
    目录一.使用vector容器二.调整指针法大家好,今天和大家分享的是反转链表的两种方法,第一种是用泛型编程里面的STL,第二种是利用多个指针进行操作,小孩子才做选择,建议两个都学。我...
    99+
    2023-02-09
    C++ 反转链表
  • python链表反转的方法是什么
    链表反转的方法有多种,以下是其中两种常见的方法:1. 迭代法:- 首先定义三个指针:prev、cur和next,初始时prev为No...
    99+
    2023-08-18
    python
  • python中如何实现递归方法
    小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.递归概念递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个...
    99+
    2023-06-22
  • Java实现单链表反转的多种方法总结
    对于单链表不熟悉的可以看一下基于Java实现单链表的增删改查 一、原地反转 1、新建一个哨兵节点下一结点指向头结点 2、把待反转链表的下一节点插入到哨兵节点的下一节点 反转之前的链...
    99+
    2022-11-12
  • Python实现单链表中元素的反转
    给定一个单链表,将其反转。其实很容易想到,只需要修改每个结点的指针指向:即令后一个结点指向前一个结点,并且将表头指针指向最后一个结点即可。 这个过程可以用循环实现,也可以用递归来实...
    99+
    2022-11-10
  • python非递归全排列实现方法
    刚刚开始学习python,当前看到了函数这一节。结合数组操作,写了个非递归的全排列生成。原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排...
    99+
    2022-06-04
    递归 排列 方法
  • python怎么实现单向链表及单向链表的反转
    这篇文章给大家分享的是有关python怎么实现单向链表及单向链表的反转的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。链表的定义链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息...
    99+
    2023-06-14
  • python如何实现单向链表及单向链表的反转
    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init_...
    99+
    2022-11-12
  • 刷题系列 - 用递归和遍历两个方法反转一个单链队列
    二叉树的题目告一段落,后面陆续做了些基础的题;感觉没有什么好记录的。这次是一个非常基础题目用递归和遍历两个方法反转一个单链队列。如下所示。Input: 1->2->3->4->5->NULLOutput: 5-...
    99+
    2023-06-02
  • 归并排序的迭代实现方法是什么
    本篇内容介绍了“归并排序的迭代实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!归并排序的迭代实...
    99+
    2022-10-19
  • python二分查找算法的递归实现方法
    本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = ...
    99+
    2022-06-04
    递归 算法 方法
  • Python怎么实现单链表中元素的反转
    这篇文章主要介绍了Python怎么实现单链表中元素的反转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现单链表中元素的反转文章都会有所收获,下面我们一起来看看吧。给定一个单链表,将其反转。其实...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作