
// 206. 反转链表// 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。// 输入:head = [1,2,3,4,5]// 输出:[5,4,3,2,1]/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @return {ListNode} */// 题解// 1. n个链表翻转可以拆分成两个链表反转,可以使用快慢指针// 2. 即b链表的next 指向a链表// 3.定义临时值来保存p1,即满足交换律var reverseList = function (head) { // 定义快慢指针 let p1 = head; let p2 = null; // 从null开始 // 循环遍历 while (p1) { // 定义临时变量 let temp = p1.next; p1.next = p2; // 把前一个赋值给后一个 p2 = p1 // p1继续往下走 p1 = temp } return p2};