1. 反转一个单向链表
题目:反转一个单链表
示例:
输入: 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
该博客介绍了如何使用递归方法实现单链表的反转。通过定义一个`reverse`函数,逐步反转链表的每个节点,最终得到反转后的链表。示例展示了从1->2->3->4->5->NULL开始的链表反转过程,输出结果为5->4->3->2->1->NULL。代码中定义了`ListNode`和`SingleLinkList`类,并实现了反转操作。
1111

被折叠的 条评论
为什么被折叠?



