【剑指offer】第24题,翻转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
限制:输入: 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 temp=head;
//保存上一个节点
ListNode prev=null;
while(true){
if(temp==null) break;
//用来保存下一个节点
ListNode next=temp.next;
temp.next=prev;
prev=temp;
temp=next;
}
return prev;
}
}