1.题目描述

206. 反转链表

反转一个单链表。

示例:

1
2
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

2.代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package swu.xl.algorithm.code_03_10.experiment_3;

public class Solution {
/**
* leetcode P206 反转链表
* @param head
* @return
*/
public ListNode reverseList(ListNode head) {
ListNode result = null;
ListNode cur = head;

while (cur != null){
//保存指向下一个
ListNode temp = cur.next;

//当前的指向指向结果
cur.next = result;

//结果的指向指向当前的指向
result = cur;

//当前的指向指向下一个
cur = temp;
}

return result;
}
}

class ListNode {
int val;

//赋值链表的
ListNode(int x) {
val = x;
}

// 下一个链表对象
ListNode next;
}