leetcode第206题链表反转.
没有难度啊!用两种方法吧!数据结构是跟着韩老师韩老师学得,但是感觉这样的思路比那种的简单好多
class Solution {
public ListNode reverseList(ListNode head) {
//进行链表的反转 从后往前写
if (head == null || head.next == null) {
return head;
}
//最后一个节点的next = null 反转过来也是一样的,就需要一个简化
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
}
第二种递归调用
这个解法真的是非常非常的骚气,想要理解了还真是不太容易了
class Solution {
public ListNode reverseList(ListNode head) {
//来吧!递归调用栈的解法开始
//先对数据进行校验
if (head == null || head.next == null) {
return head;
}
//这里递归其实还是比较麻烦,不进行栈的调用 就没办法循环,只会进行一次
ListNode cur = reverseList(head.next);//这里就比较怪异 返回的最后一个值
head.next.next = head;
head.next = null;
return cur;
}
}