题目:反转一个单链表 示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL解题: 用递归反转的方法来反转一个单链表 核心代码:
def reverse(self, head): if head.next == None: return head last = self.reverse(head.next) head.next.next = head head.next = None return last代码解释参考
class ListNode: def __init__(self, x): self.val = x self.next = None class SingleLinkList: def __init__(self, node=None): self.__head = node def is_empty(self): """链表是否为空""" return self.__head == None def find_head(self): return self.__head def append(self, item): node = ListNode(item) if self.is_empty(): self.__head = node else: cur = self.__head while cur.next != None: cur = cur.next cur.next = node class Solution: def reverse(self, head): if head.next == None: return head last = self.reverse(head.next) head.next.next = head head.next = None return last if __name__ == "__main__": ll = SingleLinkList() ll.append(1) ll.append(2) ll.append(3) ll.append(4) ll.append(5) ll.append(6) solution = Solution() result = solution.reverse(ll.find_head()) while result.next != None: print(result.val) result = result.next print(result.val)结果:
6 5 4 3 2 1