题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解题思路:
定义一个虚节点,用作返回链表的头节点,然后令res.next = null
,创造出最原始的要返回的链表结构。
然后遍历原来链表,每遍历一个节点,就创造一个新的节点(这里不能直接指向源节点,即ListNode cur = head
,应该初始化一个新节点),将此节点插入到返回链表中。最后返回结果链表的next.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode res = new ListNode(-1);
res.next = null;
while(head != null){
ListNode cur = new ListNode(head.val);
cur.next = res.next;
res.next = cur;
head = head.next;
}
return res.next;
}
}