JS实现一个基于对象的链表
<span style="color: #0000ff;">function
<span style="color: #000000;"> Node(element){<span style="color: #0000ff;">this.element = element;<span style="color: #008000;">//<span style="color: #008000;">节点存储的元素
<span style="color: #0000ff;">this.next = <span style="color: #0000ff;">null;<span style="color: #008000;">//<span style="color: #008000;">节点指向的下一个节点,这里先设置为空
<span style="color: #000000;">}
<span style="color: #0000ff;">function<span style="color: #000000;"> LList(){
<span style="color: #0000ff;">this.head = <span style="color: #0000ff;">new Node("head");<span style="color: #008000;">//<span style="color: #008000;">生成一个头节点
<span style="color: #0000ff;">this.find = find;<span style="color: #008000;">//<span style="color: #008000;">在链表中找到某个节点
<span style="color: #0000ff;">this.insert = insert;<span style="color: #008000;">//<span style="color: #008000;">在链表中某个元素后面插入某个节点元素
<span style="color: #0000ff;">this.display = display;<span style="color: #008000;">//<span style="color: #008000;">在将链表中的节点元素显示出来
<span style="color: #0000ff;">this.findPrevIoUs = findPrevIoUs;<span style="color: #008000;">//<span style="color: #008000;">找到某个节点的上一个节点
<span style="color: #0000ff;">this.remove = remove;<span style="color: #008000;">//<span style="color: #008000;">删除某个节点
<span style="color: #000000;">}
<span style="color: #0000ff;">function<span style="color: #000000;"> remove(item) {
<span style="color: #0000ff;">var prevNode = <span style="color: #0000ff;">this<span style="color: #000000;">.findPrevIoUs(item);
<span style="color: #0000ff;">if (!(prevNode.next == <span style="color: #0000ff;">null<span style="color: #000000;">)) {
prevNode.next =<span style="color: #000000;"> prevNode.next.next;
}
}
<span style="color: #0000ff;">function<span style="color: #000000;"> findPrevIoUs(item) {
<span style="color: #0000ff;">var currNode = <span style="color: #0000ff;">this<span style="color: #000000;">.head;
<span style="color: #0000ff;">while (!(currNode.next == <span style="color: #0000ff;">null) &&<span style="color: #000000;">
(currNode.next.element !=<span style="color: #000000;"> item)) {
currNode =<span style="color: #000000;"> currNode.next;
}
<span style="color: #0000ff;">return<span style="color: #000000;"> currNode;
}
<span style="color: #0000ff;">function<span style="color: #000000;"> display() {
<span style="color: #0000ff;">var currNode = <span style="color: #0000ff;">this<span style="color: #000000;">.head;
<span style="color: #0000ff;">var nodestr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">while (!(currNode.next == <span style="color: #0000ff;">null<span style="color: #000000;">)) {
nodestr +=" "+<span style="color: #000000;">currNode.next.element;
currNode =<span style="color: #000000;"> currNode.next;
}
console.log(nodestr);
}
<span style="color: #0000ff;">function<span style="color: #000000;"> find(item) {
<span style="color: #0000ff;">var currNode = <span style="color: #0000ff;">this<span style="color: #000000;">.head;
<span style="color: #0000ff;">while (currNode.element !=<span style="color: #000000;"> item) {
currNode =<span style="color: #000000;"> currNode.next;
}
<span style="color: #0000ff;">return<span style="color: #000000;"> currNode;
}
<span style="color: #0000ff;">function<span style="color: #000000;"> insert(newElement,item) {
<span style="color: #0000ff;">var newNode = <span style="color: #0000ff;">new<span style="color: #000000;"> Node(newElement);
<span style="color: #0000ff;">var current = <span style="color: #0000ff;">this<span style="color: #000000;">.find(item);
newNode.next =<span style="color: #000000;"> current.next;
current.next =<span style="color: #000000;"> newNode;
}
<span style="color: #008000;">/<span style="color: #008000;">测试例子<span style="color: #008000;">/
<span style="color: #0000ff;">var num = <span style="color: #0000ff;">new<span style="color: #000000;"> LList();
num.insert("a1","head"<span style="color: #000000;">);
num.insert("b1","a1"<span style="color: #000000;">);
num.insert("c1","b1"<span style="color: #000000;">);
num.display();// a1 b1 c1
num.remove("b1"<span style="color: #000000;">);
num.display();// a1 c1