iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中如何用递归与迭代方法实现链表反转
  • 723
分享到

python中如何用递归与迭代方法实现链表反转

2023-06-29 06:06:59 723人浏览 薄情痞子

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

摘要

这篇文章主要讲解了“python中如何用递归与迭代方法实现链表反转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中如何用递归与迭代方法实现链表反转”吧!定义链表node结构:cl

这篇文章主要讲解了“python中如何用递归与迭代方法实现链表反转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中如何用递归与迭代方法实现链表反转”吧!

定义链表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):

三要素:

  • 明确函数功能,该函数可以将链表反转,并返回一个头节点

  • 结束条件:当链表为空或只有一个节点时返回

    if head==None or head.next==None:        return head
  • 等价条件(缩小范围),对于数组来讲,缩小范围是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中如何用递归与迭代方法实现链表反转”的内容了,经过本文的学习后,相信大家对python中如何用递归与迭代方法实现链表反转这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: python中如何用递归与迭代方法实现链表反转

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

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

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

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

下载Word文档
猜你喜欢
  • python中如何用递归与迭代方法实现链表反转
    这篇文章主要讲解了“python中如何用递归与迭代方法实现链表反转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中如何用递归与迭代方法实现链表反转”吧!定义链表node结构:cl...
    99+
    2023-06-29
  • python递归&迭代方法实现链表反转
    定义链表node结构: class ListNode:       def __init__(self,data):         self.data = data        ...
    99+
    2022-11-13
  • 如何使用PHP递归实现链表的反转操作
    链表是一种非常常见的数据结构,是由一系列节点组成的集合,每个节点包含一个数据项和指向下一个节点的指针。链表可以用来实现栈、队列、哈希表等数据结构,并且在算法题中也常常遇到。在许多算法问题中,需要对链表进行反转操作。反转链表的基本思路是将链表...
    99+
    2023-05-14
    php
  • python中如何实现递归方法
    小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.递归概念递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个...
    99+
    2023-06-22
  • 教你如何利用.net core实现反向代理中间件的方法
    这篇文章主要给大家介绍了关于利用.net core实现反向代理中间件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧最近在将一些项目的rest api迁...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作