剑指offer- python实现

面试题24:反转链表

2020-03-09  本文已影响0人  不会编程的程序猿甲

题目:
输入一个链表,反转链表后,输出新链表的表头。

解题思路:
这道题注意思考三个问题:输入的链表头指针是空或者输入的链表只有一个节点;反转后的链表出现断裂怎么办;如何保证返回的是反转后的头节点。具体的思路如下:

24 反转链表.png

代码实现:

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        pre = None
        current = pHead
        reverseHead = None
        while current != None:
            pnext = current.next    #当current不为空时,才有下一节点
            if pnext == None:
                reverseHead = current  #如果下一节点为空,当前尾节点
            current.next = pre
            
            #变量更新
            pre = current 
            current = pnext
        return reverseHead

提交结果:

牛客网提交结果.png
上一篇下一篇

猜你喜欢

热点阅读