链表 反转单向链表、反转双向链表

94 阅读1分钟

题目

反转一个单向链表

  • 保存当前节点的下一个节点,然后让当前节点指向保存的上一个节点,一开始上一个节点为 null,然后当前节点变成保存的下一个节点,上一个节点变成上次的当前节点
function reverseNode(head) {
  let pre = null;
  let next = null;

  while (head !== null) {
    const next = head.next; // 保存下一个节点
    head.next = pre;// 当前节点指向上一个保存的节点
    pre = head;// 上一个节点指向当前节点
    head = next;// 去到保存的下一个节点
  }
  
  return pre;
}


反转双向链表

  • 和反转单向链表一样,保存下一个节点和当前节点
function reverseDoubleNode(head) {
  let pre = null;
  let next = null;

  while (head !== null) {
    const next = head.next;

    head.next = pre;
    head.pre = next;

    pre = head;
    head = next;
  }

  return pre;
}