力扣160题 相交链表

  1. var getIntersectionNode = function(headA, headB) {
  2. if (headA === null || headB === null) { // 任一链表为空即不可相交
  3. return null;
  4. }
  5. let pA = headA, pB = headB;
  6. while (pA !== pB) { // 依次访问两个链表,当任一链表为空时将
  7. pA = pA === null ? headB : pA.next;
  8. pB = pB === null ? headA : pB.next;
  9. }
  10. return pA;
  11. };

反转链表

  1. // 反转链表
  2. function reverse(head) {
  3. if (head.next === null || head === null) {
  4. return; //没节点或者单节点不用反转
  5. }
  6. let currNode = head;
  7. let pre = null; // 储存首节点
  8. while (currNode !== null) {
  9. const temp = currNode.next; //将currNode的下个节点保存
  10. currNode.next = pre; //将currNode的下个节点指向新链表的首节点,此时currNode就是链表的首节点
  11. pre = currNode; //将首节点记录下来
  12. currNode = temp; //将currNode后移
  13. }
  14. return pre
  15. }