📅  最后修改于: 2023-12-03 15:40:53.615000             🧑  作者: Mango
链表是一种常见的数据结构,它由一个节点序列组成,每个节点包含元素和一个指向下一个节点的引用(指针)。在 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)
方法,在链表尾部插入节点。否则,需要通过遍历找到指定位置的节点,然后插入新的节点。
上面的程序提供了一个简单的链表实现,可以用于学习和实践。如果你需要在自己的项目中使用链表,可以根据实际需求进行修改和扩展。