定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
此题我一开始陷入一个怪圈就是在旧链表上改,就是每次处理后的新链表的最后一个节点总要指向要处理的旧链表的第一个节点(没有必要这两个链表可以直接分开)遍历旧的链表依次添加到新链表上即可
/**
* 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 top=null;
while(head!=null){
ListNode head1=head.next;//临时存储下一个要处理的点
head.next=top;//此点放首位
top=head;//top始终保存当前新链表的头结点
head=head1;
}
return top ;
}
}