题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
实现
非递归
public static ListNode reverseList(ListNode head) {
ListNode reverseHead = null;
//遍历节点,用于移动链表的
ListNode temp = head;
//翻转后,用于记录当前节点的前一个节点
ListNode pre = null;
while(temp != null){
//移动到最后一个节点时,此时该节点就是翻转后的头节点
if(temp != null && temp.next == null){
reverseHead = temp;
}
//当前节点的下一个节点
ListNode actualNext = temp.next;
//使当前节点的next指针指向pre节点(这才会进行实际的翻转操作)
temp.next = pre;
//给pre节点赋值(把当前节点赋值给pre,当下次循环进来时,使当前节点的next指针指向pre节点)
pre = temp;
//移动到下一个节点
temp = actualNext;
}
return reverseHead;
}
网友评论