链表是常见的数据结构之一,在JavaScript中也可以用来实现一些常见的算法。本文将介绍如何使用JavaScript实现一个链表,并提供两个示例说明。
编写链表实现代码
下面是一个简单的JavaScript链表实现代码:
class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
this.size = 0;
}
// Add element to linked list
add(data) {
const node = new Node(data);
if (this.head === null) {
this.head = node;
} else {
let current = this.head;
while (current.next !== null) {
current = current.next;
}
current.next = node;
}
this.size++;
}
// Insert element at given position
insertAt(data, index) {
if (index < 0 || index > this.size) {
return;
}
const node = new Node(data);
let current = this.head;
if (index === 0) {
node.next = current;
this.head = node;
} else {
let previous = null;
let count = 0;
while (count < index) {
previous = current;
current = current.next;
count++;
}
node.next = current;
previous.next = node;
}
this.size++;
}
// Remove element at given index
removeFrom(index) {
if (index < 0 || index >= this.size) {
return;
}
let current = this.head;
if (index === 0) {
this.head = current.next;
} else {
let previous = null;
let count = 0;
while (count < index) {
previous = current;
current = current.next;
count++;
}
previous.next = current.next;
}
this.size--;
}
// Print linked list data
print() {
let current = this.head;
while (current !== null) {
console.log(current.data);
current = current.next;
}
}
}
上面的代码定义了两个类,一个是Node
,表示链表节点,另一个是LinkedList
,表示链表对象。链表类中包含了添加、插入、删除和打印数据的方法。
示例1:使用链表实现栈
栈是常见的数据结构,可以用链表来实现。下面是使用上面的链表实现代码来实现一个栈的例子:
class Stack {
constructor() {
this.list = new LinkedList();
}
// Add element to the top of stack
push(data) {
this.list.add(data);
}
// Remove element from top of stack
pop() {
this.list.removeFrom(this.list.size - 1);
}
// Print stack data
print() {
this.list.print();
}
}
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.print(); // Output: 1 2 3
stack.pop();
stack.print(); // Output: 1 2
上面的代码中定义了一个Stack
类,使用链表来实现栈的数据结构。在栈类中包含了push
添加数据、pop
移除数据和print
打印栈中的数据的方法。
示例2:使用链表实现队列
队列是同样常见的数据结构,也可以使用链表来实现。这里提供一个使用上面实现的链表代码来实现队列的例子:
class Queue {
constructor() {
this.list = new LinkedList();
}
// Add element to the end of queue
enqueue(data) {
this.list.add(data);
}
// Remove element from front of queue
dequeue() {
this.list.removeFrom(0);
}
// Print queue data
print() {
this.list.print();
}
}
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.print(); // Output: 1 2 3
queue.dequeue();
queue.print(); // Output: 2 3
上面代码中定义了一个Queue
类,使用链表来实现队列的数据结构。在队列类中包含了enqueue
添加数据、dequeue
移除数据和print
打印队列中的数据的方法。
以上就是使用JavaScript实现链表的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript写的一个链表实现代码 - Python技术站