美文网首页
翻转链表

翻转链表

作者: 与蟒唯舞 | 来源:发表于2018-01-25 10:21 被阅读41次
LintCode 35 题
给出一个链表:1->2->3->null,这个翻转后的链表为:3->2->1->null

使用 python 语言实现:

#coding:utf-8

class ListNode(object):
    def __init__(self, val, next=None):
        self.val = val
        self.next = next


class Solution:
    """
    采用循环的方法反转链表
    @param: head: n
    @return: The new head of reversed linked list.
    """
    def reverse(self, head):
        if head is None or head.next is None:  
            return head
        cur = head.next
        head.next = None
        while cur:
            cur_next = cur.next
            cur.next = head
            head = cur
            cur = cur_next
        return head # new head

    """
    采用递归的方法反转链表
    时间复杂度 O(n)
    head 为原链表的头结点,new_head 为反转后链表的头结点  
    """
    def reverse_recursive(self, head):
        if head is None or head.next is None:  
            return head
        else:
            new_head = self.reverse_recursive(head.next)
            head.next.next = head
            head.next = None
            return new_head

# 测试代码1,建立链表:1->2->3->None
head = ListNode(1)               
p1 = ListNode(2)                
p2 = ListNode(3)  
head.next = p1 
p1.next = p2 

# 输出链表:3->2->1->None
s1 = Solution().reverse(head)            
while s1:  
    print s1.val  
    s1 = s1.next

# 测试代码2,建立链表:1->2->3->None
head = ListNode(1)               
p1 = ListNode(2)                
p2 = ListNode(3)  
head.next = p1 
p1.next = p2 

# 输出链表:3->2->1->None
s2 = Solution().reverse_recursive(head)
while s2:  
    print s2.val  
    s2 = s2.next

图解递归方法:

相关文章

  • 翻转链表

    翻转链表 描述翻转一个链表 样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nul...

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • 链表翻转

    给定单向链表,返回翻转后的链表

  • 链表

    1.翻转链表链表的定义 翻转 快慢指针找链表 的中间位置 3.有序链表的合并 4.判断链表中是否有环解法1: 借助...

  • Swift - LeetCode - 翻转链表

    题目 翻转链表 问题: 翻转链表中第m个节点到第n个节点的部分 说明: m,n满足1 ≤ m ≤ n ≤ 链表长度...

  • K 个一组翻转链表(递归,Kotlin)

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • leetcode第九十二题—反转链表 II

    又是一道升级题,还记得原来的翻转链表嘛,这个是要求指定m和n翻转链表。或许你忘了链表翻转怎么做,我编一个口诀:要问...

  • 【LeetCode】25.K个一组翻转链表

    题目描述 25.K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k是一个正整数...

  • 翻转单链表

    翻转单链表 方法一:将单链表头插到一个新链表中 浪费空间,不过简单 方法二:使用三个指针遍历单链表,逐个点进行翻转...

  • 【Leetcode】【链表】025-Reverse Nodes

    k个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于...

网友评论

      本文标题:翻转链表

      本文链接:https://www.haomeiwen.com/subject/jgwmaxtx.html