题目描述:
输入一个链表,反转链表后,输出新链表的表头。
测试用例:
输入:{1,2,3}
输出:{3,2,1}
思路:
- 定义cur代表当前要逆置的节点
- 定义newHead表示新的链表的头
- 定义prev表示当前节点的前驱节点
- 从头结点一次向后逆置即可
代码如下:
class ListNode{
int val;
ListNode next;
public ListNode(int val){
this.val = val;
}
}
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode cur = head;
ListNode prev = null;
ListNode newHead = null;
while(cur != null){
ListNode curNext = cur.next;
if (curNext == null){
newHead = cur;
}
cur.next = prev;
prev = cur;
cur = curNext;
}
return newHead;
}
}