通过JavaScript实现链表数据结构,可以实现一些常见的操作,比如在链表的末尾添加元素、删除链表元素、获取链表的长度等等。下面将介绍JavaScript实现链表数据结构的完整攻略。
创建一个链表类
首先,我们需要定义一个链表类,该类应该包含以下几个方法:链表的构造函数、获取链表长度的方法、在链表末尾添加元素的方法、在任意位置插入元素的方法、根据值删除元素的方法、获取指定位置的元素的方法。
class LinkedList {
constructor() {
this.head = null
this.length = 0
}
get size() {
return this.length
}
append(data) {
const node = new Node(data)
if(!this.head) {
this.head = node
} else {
let current = this.head
while(current.next) {
current = current.next
}
current.next = node
}
this.length++
}
insert(position, data) {
if(position < 0 || position > this.length) {
return false
}
const node = new Node(data)
if(position === 0) {
node.next = this.head
this.head = node
} else {
let current = this.head
let prev = null
let index = 0
while(index < position) {
prev = current
current = current.next
index++
}
prev.next = node
node.next = current
}
this.length++
}
remove(data) {
let current = this.head
let prev = null
while(current) {
if(current.data === data) {
if(!prev) {
this.head = current.next
} else {
prev.next = current.next
}
this.length--
return true
}
prev = current
current = current.next
}
return false
}
get(position) {
if(position < 0 || position >= this.length) {
return null
}
let current = this.head
let index = 0
while(index < position) {
current = current.next
index++
}
return current.data
}
}
class Node {
constructor(data) {
this.data = data
this.next = null
}
}
上述代码中,我们通过定义class
创建链表数据结构,链表节点通过class
定义一个节点。其中,链表类包含链表构造函数(constructor
)、获取链表长度的方法(size
)、在链表末尾添加元素的方法(append
)、在任意位置插入元素的方法(insert
)、根据值删除元素的方法(remove
)、获取指定位置的元素的方法(get
)。链表节点包括链表值data
和下一个节点的指针next
。
示例一:在链表末尾插入元素
我们可以通过在链表末尾插入元素来实现链表数据结构,实现代码如下:
const list = new LinkedList()
list.append(1)
list.append(2)
list.append(3)
console.log(list.size) // 3
console.log(list.get(0)) // 1
console.log(list.get(2)) // 3
上述代码中,我们新建一个链表实例list
,包含元素1、2和3。然后,我们打印链表长度size
,此处应该是3。接着,我们获取链表中第一个元素的值,应该是1,最后我们获取链表中最后一个元素的值,应该是3。
示例二:删除链表中指定的元素
我们可以通过在链表中找到指定值的元素,并删除这个元素来实现从链表中删除元素的功能,代码如下:
const list = new LinkedList()
list.append(1)
list.append(2)
list.append(3)
list.remove(2)
console.log(list.size) // 2
console.log(list.get(1)) // 3
上述代码中,我们新建一个链表实例list
,包含元素1、2和3。我们通过remove
方法删除元素2。然后,我们打印链表长度size
,此处应该是2,因为元素2已经被删除了。接着,我们获取链表中第二个元素的值,应该是3,因为元素2已经被删除了。
总之,通过JavaScript实现链表数据结构,可以方便地完成链表的各种操作,如在链表中添加或删除元素,获取链表长度等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现的链表数据结构实例 - Python技术站