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