翻转单链表。

链表的操作,关键就在指针。当然使用栈很容易实现,但是我们有更好的方法,就是借助三个指针。

pre:当前元素的前一个元素的指针
cur:当前元素的指针
nextp:当前元素的下一个元素的指针

实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None

class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
pre = None
cur = head

while cur != None:
nextp = cur.next

cur.next = pre #翻转操作

pre = cur
cur = nextp
return pre