反转一个单链表。
示例:
输入: 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 result = null; //定义结果链表,result为结果链表的头结点
ListNode cur = head;
while(cur!=null){
ListNode next = cur.next; //记录当前节点的下一个节点,防止引用丢失
//头插
cur.next = result;
result = cur;
cur = next;
}
return result;
}
}
三引用遍历
/**
* 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 prev = null; //定义前驱节点
ListNode cur = head;
while(cur!=null){
ListNode next = cur.next; //记录当前节点的下一个节点,防止引用丢失
cur.next = prev;
prev = cur;
cur = next;
}
return prev; //循环结束时,cur=null,返回cur的前驱结点
}
}