题目:输入一个链表,反转链表后,输出链表的所有元素。
思路:为了反转一个链表,需要调整链表中指针的方向。为了调整结点i的下一个指针,除了需要知道结点i本身之外,还需要i之前的一个结点h,因为我们需要把结点i的下一个指针指向前结点h。同时我们还需要实现保存i的一个结点j,以防止链表断开。因此相应的,我们需要定义3个指针,分别指向当前结点,前结点,下一节点。
Python代码如下:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
pReversedHead = None
pNode = pHead
pPrev = None
while pNode != None:
pNext = pNode.next
if pNext == None:
pReversedHead = pNode
pNode.next = pPrev
pPrev = pNode
pNode = pNext
return pReversedHead
# 递归实现反转链表
def ReverseListRec(self, pHead):
if not pHead or not pHead.next:
return pHead
else:
pReversedHead = self.ReverseList(pHead.next)
pHead.next.next = pHead
pHead.next = None
return pReversedHead
node1 = ListNode(10)
node2 = ListNode(11)
node3 = ListNode(13)
node1.next = node2
node2.next = node3
S = Solution()
p = S.ReverseList(node1)
print(p.next.val)