题目
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解题思路(求解思路是参考的评论区)
创建三个指针,分别指向前一个节点pre、当前节点cur和下一个节点next,建立cur->pre的链表,迭代下去,最后返回pre
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null; //前一个节点
ListNode cur = head; //当前节点
while(cur!=null){
ListNode next = cur.next; //后一个节点(临时节点,保存原来链表cur的下一个节点)
cur.next = pre; //建立cur->pre
pre = cur; //指针后移
cur = next; //指针后移
}
return pre;
}
}