JavaScript 中的链表数据结构
在本文中,我们将讨论 JavaScript 中的链表数据结构。
链表是一系列通过链接连接在一起的数据结构。
链表是一系列包含项的链接。每个链接都包含对另一个链接的连接。它是使用最广泛的数据结构之一。在创建链表时,我们会使用一些术语。
节点 − 它表示链表中的每个元素。它包括数据和 next 两个部分。数据包含我们要存储的数据,而 next 包含对列表中下一个元素的引用。
链接 − 每个 next 引用都是一个链接。
头 − 对第一个元素的引用称为头。
示例
以下示例演示了 JavaScript 中的链表数据结构。我们将首先创建一个链表,然后对链表执行各种操作,如插入、删除、显示和检查链表的状态。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Linked List Data Structure</title>
</head>
<body>
<script type="text/javascript">
class Node {
constructor(data) {
this.element = data;
this.next = null;
}
}
class LinkedList {
constructor() {
this.head = null;
this.size = 0;
}
add(element) {
let node = new Node(element);
let temp;
if (this.head == null) this.head = node;
else {
temp = this.head;
while (temp.next) {
temp = temp.next;
}
temp.next = node;
}
this.size++;
}
insertAt(element, index) {
if (index < 0 || index > this.size)
return document.write("Enter a valid index.");
else {
let node = new Node(element);
let curr, prev;
curr = this.head;
if (index == 0) {
node.next = this.head;
this.head = node;
} else {
curr = this.head;
let it = 0;
while (it < index) {
it++;
prev = curr;
curr = curr.next;
}
node.next = curr;
prev.next = node;
}
this.size++;
}
}
removeFrom(index) {
if (index < 0 || index >= this.size)
return document.write("Enter a valid index");
else {
let curr,
prev,
it = 0;
curr = this.head;
prev = curr;
if (index === 0) {
this.head = curr.next;
} else {
while (it < index) {
it++;
prev = curr;
curr = curr.next;
}
prev.next = curr.next;
}
this.size--;
return curr.element;
}
}
removeElement(element) {
let curr = this.head;
let prev = null;
while (curr != null) {
if (curr.element === element) {
if (prev == null) {
this.head = curr.next;
} else {
prev.next = curr.next;
}
this.size--;
return curr.element;
}
prev = curr;
curr = curr.next;
}
return -1;
}
indexOf(element) {
let count = 0;
let temp = this.head;
while (temp != null) {
if (temp.element === element) {
document.write("</br>The Element is found at the index : ");
return count;
}
count++;
temp = temp.next;
}
return -1;
}
isEmpty() {
return this.size == 0;
}
size_of_list() {
document.write("</br>The size of the Linked List is : " + this.size);
}
displayList() {
let curr = this.head;
let str = "";
while (curr) {
str += curr.element + " ";
curr = curr.next;
}
document.write("The Elements in the Linked List are: " + str);
}
}
let ll = new LinkedList();
ll.add(10);
ll.add(20);
ll.add(30);
ll.add(40);
ll.add(50);
ll.displayList();
ll.size_of_list();
document.write(ll.indexOf(40));
</script>
</body>
</html>
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
安卓
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP