Fork me on GitHub

206. Reverse Linked List

可以用数组保存 然后每一个结点的值进行更改

https://www.bilibili.com/video/av49696612/?redirectFrom=h5

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
public ListNode reverseList(ListNode head) {
	if(head == null) {
		return null;
	}
	ListNode a = head;
	ListNode b = head.next;
	while(b!=null) {                                                        //不用去判断a
		ListNode c = b.next;
		b.next = a;
		a = b ;
		b = c ;
	}
	head.next = null;
	return a;                                                                    //记得返回a
	}
}

迭代法

public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    return prev;
}

递归

public ListNode reverseList(ListNode head) {
    if (head == null || head.next == null) return head;
    ListNode p = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return p;
}

posted @ 2019-07-24 17:20  cznczai  阅读(105)  评论(0编辑  收藏  举报