📌  相关文章
📜  用于在链表中插入节点的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 15:40:53.615000             🧑  作者: Mango

用于在链表中插入节点的 Javascript 程序

链表是一种常见的数据结构,它由一个节点序列组成,每个节点包含元素和一个指向下一个节点的引用(指针)。在 Javascript 中,链表可以用对象来实现。

插入节点是链表常用的操作之一,可以在任意位置插入一个节点。下面是一个用于在链表中插入节点的 Javascript 程序:

class Node {
  constructor(data, next = null) {
    this.data = data;
    this.next = next;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.size = 0;
  }

  // 在链表头部插入节点
  insertAtBeginning(data) {
    this.head = new Node(data, this.head);
    this.size++;
  }

  // 在链表尾部插入节点
  insertAtEnd(data) {
    let node = new Node(data);
    let current;

    // 如果链表为空,插入的节点为头节点
    if (!this.head) {
      this.head = node;
    } else {
      current = this.head;

      // 遍历到链表尾部
      while (current.next) {
        current = current.next;
      }

      // 将节点插入到链表尾部
      current.next = node;
    }

    this.size++;
  }

  // 在指定位置插入节点
  insertAtPosition(data, position) {
    // 如果插入位置小于 0,或者大于链表长度,则插入失败
    if (position < 0 || position > this.size) {
      return false;
    }

    // 如果插入位置为 0,则插入到链表头部
    if (position === 0) {
      this.insertAtBeginning(data);
      return true;
    }

    // 如果插入位置为链表尾部,则插入到链表尾部
    if (position === this.size) {
      this.insertAtEnd(data);
      return true;
    }

    let node = new Node(data);
    let current, previous;

    current = this.head;
    let count = 0;

    // 遍历到指定位置
    while (count < position) {
      previous = current;
      current = current.next;
      count++;
    }

    // 将节点插入到指定位置
    node.next = current;
    previous.next = node;
    this.size++;

    return true;
  }
}

上面的程序定义了两个类,Node 类代表链表中的节点,LinkedList 类代表一个链表。LinkedList 类中包含三个方法用于在链表中插入节点:

  • insertAtBeginning(data):在链表头部插入节点。
  • insertAtEnd(data):在链表尾部插入节点。
  • insertAtPosition(data, position):在指定位置插入节点。

其中,insertAtPosition(data, position) 方法中实现了在指定位置插入节点的功能。它首先判断插入位置是否合法,如果插入位置小于 0,或者大于链表长度,则插入失败。如果插入位置为 0,则直接调用 insertAtBeginning(data) 方法,在链表头部插入节点。如果插入位置为链表尾部,则直接调用 insertAtEnd(data) 方法,在链表尾部插入节点。否则,需要通过遍历找到指定位置的节点,然后插入新的节点。

上面的程序提供了一个简单的链表实现,可以用于学习和实践。如果你需要在自己的项目中使用链表,可以根据实际需求进行修改和扩展。