- 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
代码:
/**
* 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 cur = head;//定义cur指向需要需要反转链表
ListNode prev = null;//定义一个prev指向需要反转的前一个链表
ListNode newhead = null;//定义一个newHead
while (cur != null) {
ListNode curNext = cur.next;//定义一个newHead指向需要反转的链表的下一个链表
if(curNext == null){
newhead =cur;//cur走到最后一个链表时,重新定义链表的头
}
cur.next =prev;//反转链表
prev =cur;//在cur往后移动之前确定cur
cur = curNext;//cur往后移动
}
return newhead;//循环结束,返回链表的头
}
}
结果: