一、题目
翻转一个链表
样例
样例 1:
输入: 1->2->3->null
输出: 3->2->1->null
样例 2:
输入: 1->2->3->4->null
输出: 4->3->2->1->null
二、思路:
1、先判断列表是否为空或者只有一个节点
2、当第一个节点(1)的下一个节点(2)不为null时,则把这个节点(2)插到链表的第一位置,然后第一个节点(1)向后移一位,依次循环,直到下一个节点为null跳出循环
3、例如
(1)1->2->3->4->null
(2)2->1->3->4->null
(3)3->2->1->4->null
(4)4->3->2->1->null
三、js代码
const reverse = function (head) {
// write your code here
if (head === null || head.next === null) { // 链表为空或只有一个节点时,直接返回该链表
return head;
}
var p = head.next;
head.next = null; // 让原本的head变为尾节点
var temp; // 临时指针
while (p !== null) {
temp = p.next;
p.next = head;
head = p;
p = temp;
}
return head;
}