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):
  • 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')
    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实现视频分帧的方法分享
    Python实现视频分帧的方法分享
    2023-03-03
  • PyTorch中的神经网络 Mnist 分类任务
    PyTorch中的神经网络 Mnist 分类任务
    2023-03-03
  • python使用UDP实现客户端和服务器对话
    python使用UDP实现客户端和服务器对话
    2023-03-03
  • Python ArcPy批量掩膜、重采样大量遥感影像的操作
    Python ArcPy批量掩膜、重采样大量遥感影像的操作
    2023-03-03
  • python多进程中的生产者和消费者模型详解
    python多进程中的生产者和消费者模型详解
    2023-03-03
  • Python生产者与消费者模型中的优势介绍
    Python生产者与消费者模型中的优势介绍
    2023-03-03
  • numpy取反操作符和Boolean类型与0-1表示方式
    numpy取反操作符和Boolean类型与0-1表示方式
    2023-03-03
  • python如何将图片生成视频MP4
    python如何将图片生成视频MP4
    2023-03-03
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号