您的位置:首页 > 职场人生

剑指面试题24-反转链表 leetcode 206

2019-03-16 15:54 721 查看

题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

分析:需要把头结点的next设置为None,需要保存下一个节点,防止链表断开。


非递归实现:

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init_
4000
_(self, x):
#         self.val = x
#         self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if pHead is None:
return pHead
last = None  #指向上一个节点
while pHead:
# 先用tmp保存pHead的下一个节点的信息,
# 保证单链表不会因为失去pHead节点的next而就此断裂
tmp = pHead.next
# 保存完next,就可以让pHead的next指向last了
pHead.next = last
# 让last,pHead依次向后移动一个节点,继续下一次的指针反转
last = pHead
pHead = tmp
return last

leetcode:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur, rev = head, None
while cur:
rev, rev.next, cur = cur, rev, cur.next
return rev
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: