题目
思路
-
递归实现
首先就是判断head为空或者curp.next为空,就直接返回;
接着将curp.next进入递归;
然后反转链表,将curp.next.next指向当前curp;
接着断开原本的指向,将链表最后节点指向null;
最后返回curp。 -
迭代实现
创建新的变量存储curp.next和curp.pre;
在遍历链表的时候,将curp.next改为curp.pre;
代码
//反转链表 - 递归实现
var reverseList = function(curP) {
if(curP==null||curP.next==null) return curP;
var tail = reverseList(curP.next)
curP.next.next = curP
curP.next = null
return tail;
};
//反转链表 — 迭代实现
var reverseList = function(head) {
if(head == null || head.next == null) return head;
var curP = head.next
head.next = null
var temp = null
while(curP !== null){
temp = curP.next
curP.next = head
head = curP
curP = temp
}
return head;
}