题目描述
解题思路
遍历链表,以头插法的方式建立新链表,完成链表的反转。
代码实现
/**
* 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) {
//链表为空或只有一个节点时,直接返回。
if(head == null || head.next == null) return head;
ListNode res = new ListNode(0, null);
while(head != null){
// 头插法建立链表
ListNode temp = new ListNode(head.val);
temp.next = res.next;
res.next = temp;
head = head.next;
}
return res.next;
}
}