📌  相关文章
📜  用于以交替奇偶节点顺序排列单链表的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 14:56:19.387000             🧑  作者: Mango

用于以交替奇偶节点顺序排列单链表的 Javascript 程序

这个 Javascript 程序的功能是以交替奇偶节点的顺序排列单链表。

在这个程序中,我们需要先创建一个单链表,再按照交替的奇偶节点顺序重新排列链表。

以下是这个程序的实现方式:

function ListNode(val) {
  this.val = val;
  this.next = null;
}

function oddEvenList(head) {
  if (!head) {
    return head;
  }
  let odd = head;
  let even = head.next;
  let evenHead = even;

  while (even && even.next) {
    odd.next = even.next;
    odd = odd.next;
    even.next = odd.next;
    even = even.next;
  }

  odd.next = evenHead;

  return head;
}

const list = new ListNode(1);
list.next = new ListNode(2);
list.next.next = new ListNode(3);
list.next.next.next = new ListNode(4);
list.next.next.next.next = new ListNode(5);

console.log(oddEvenList(list)); // 1 -> 3 -> 5 -> 2 -> 4

在这个程序中,我们首先创建了一个 ListNode 类,它表示一个节点,每个节点都有一个值和一个指向下一个节点的指针。

然后我们定义了一个 oddEvenList 函数,它接收一个链表的头节点作为参数。

我们首先判断链表是否为空,如果为空,我们直接返回链表。

接着,我们定义了三个指针 odd、even 和 evenHead。

我们将 odd 指向链表的头节点,even 指向链表头节点的下一个节点,evenHead 指向 even。

然后我们使用 while 循环来遍历链表。在循环中,我们首先通过将 odd 的下一个节点指向 even 的下一个节点来将 even 插入到 odd 后面,将 odd 指向它的下一个节点,even 指向它的下一个节点的下一个节点。

最后,我们将 odd 的下一个节点指向 evenHead,以便将偶数位置的节点链接在一起。

最后,我们返回链表头节点。

我们使用一个示例链表来测试 oddEvenList 函数。该链表包含 5 个节点,值为 1、2、3、4 和 5。调用 oddEvenList 函数后,我们得到的新链表为 1 -> 3 -> 5 -> 2 -> 4。

这就是这个 Javascript 程序的详细介绍。