题目要求:
分析:
这道题目比较简单,遍历链表中的所有节点,只要设置两个中间节点,一个用来存放当前节点curr的前一个节点,一个用来暂时存放目前节点curr的下一个节点,然后将curr的next指针指向其前一个节点即可。
注意:curr是从第一个节点开始的,即它开始时所指的节点是head,那么head的前一个节点是null,prev节点的初始值是null。
具体代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode temp = new ListNode(0);
ListNode curr = head;
ListNode prev = null;
while(curr != null) {
temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
return prev;
}
}
我看标准答案中的递归方法也是蛮简单的,等刷完之后,有空也可以研究下递归的方法,因为我的递归思想还是太差了。