反转链表(剑指offer)
输入一个链表,反转链表后,输出新链表的表头。
解法:很明显,每次都要将当前结点和后续结点断开,与当前结点的next指向前驱结点,故每次先保存后续结点,当前结点next指向前驱,完成一个结点反转;然后前驱结点变更为当前结点,当前结点变为后续结点以便下一次反转
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode node = head;
ListNode prenode = null;
ListNode nextnode = null;
while(node!=null){
nextnode = node.next;
node.next = prenode;
prenode = node;
node = nextnode;
}
return prenode;
}
}