什么是链表?
链表是由一组
节点
组成的集合。
-
实现
我们设计的链表包含两个类。Node类用来表示节点,LinkedList类提供了插入节点、删除节点、显示列表元素的方法,以及一些辅助方法。
-
Node类
Node类包含连个属性:element用来保存节点上的数据,next用来保存指向下一个节点的链接。
class Node { constructor (element) { this.element = element this.next = null } }
-
-
LinkedList类
class LinkedList { constructor () { this.head = new Node('head') } // 查找节点 find (item) { let currNode = this.head while (currNode.element != item) { currNode = currNode.next } return currNode } // 插入 insert (newElement, item) { let newNode = new Node(newElement) let current = this.find(item) newNode.next = current.next current.next = newNode } // 显示链表中的元素 display () { let currNode = this.head while (currNode.next !== null) { console.log(currNode.next.element) } currNode = currNode.next } // 删除 remove () { } }
-
双向链表
每一个节点有一个previous指向前一个节点
-
循环链表
创建的时候需要
this.head.next = this.head
插入元素之后,链表的末端指向链表的头部。