欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(剑指offer)24.反转链表

程序员文章站 2022-03-11 17:26:53
...

输入一个链表,反转链表后,输出新链表的表头。
思路:
1.设置两个指针,分别指向当前结点的前preNode后nextNode
2.将当前结点的next指向前一个结点preNode。
3.将当前结点和nextNode都向前移一个(preNode,pHead = pHead,nextNode)

class solition:
    def ReverList(self,pHead):
        """

        :param pHead:指向头结点
        :return:
        """
        # preNode 指向当前结点的前一个结点
        # nextNode 指向当前结点的后一个结点
        preNode = None
        while pHead :
            nextNode = pHead.next
            pHead.next = preNode #当前结点的next指向前一个结点
            preNode,pHead = pHead,nextNode # pHead nextNode 向前移一个
        return preNode


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

node1 = ListNode(10)
node2 = ListNode(12)
node3 = ListNode(14)

node1.next = node2
node2.next = node3

s = solition()
print(s.ReverList(node1).val)