数组、对象这些数据结构我们经常使用,之前听说过「链表」这种数据结构,一直不太理解,这些天终于有时间来看一下「链表」到底是什么?
链表里最简单的就是「单链表」,第一个节点是 head,每个节点都有两个属性,一个是 data ,一个是 next 。data 是当前节点的数据,next 指向下一个节点的指针,最后一个节点指向 null 空指针。上图:
来源 Leetcode 设计链表
class Node {
constructor(data) {
this.data = data
this.next = null
this.prev = null
}
}
class SingleList {
constructor() {
this.size = 0 //单链表长度
this.currNode = \\\'\\\'//当前节点指向
}
//在单链表中寻找 item 元素
find(item) {
while (currNode && (currNode.val !== item)) {
currNode = currNode.next
}
return currNode
}
//向单链表插入元素
inset(item, element) {
let itemNode = this.find(item)
if (!itemNode) return
let newNode = new Node(element)
newNode.next = itemNode.next;
itemNode.next = newNode
this.size++
}
//在单链表尾部添加一个节点
append(element) {
let currNode = this.findLast();
let newNode = new Node(element);
currNode.next = newNode;
this.size++;
}
//获取单链最后一个节点
findLast() {
currNode = this.currNode
while ( currNode && currNode.next) {
currNode = currNode.next
}
return currNode
}
//获取链表长度
getLength() {
return this.size
}
//单链表的遍历显示
display() {
let result = \\\'\\\'
let currNode = this.val
while (currNode) {
result += currNode.val
currNode = currNode.next
if (currNode) {
result += \\\'->\\\'
}
}
return result
}
}
const link = new SingleList()
link.append([1, 2, 3, 5])
学链表有什么用?
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34522.html