我们如何根据传递的值删除双链表中的节点,该值可以是任意一个节点



目前,我是JavaScript和node-js的初学者,我正在处理链表,在链表中,我必须从文件中读取一个句子,并将其拆分为单词,然后在链表中添加单词。我必须输入一个单词,如果它存在,它应该删除它,如果不存在,它就应该添加它。在这里,我想删除一个基于值的节点,我可以删除一个由头和尾引用的节点。基本上,我必须创建一个通用函数,在这里我可以传递列表和值,我必须删除并返回列表,这样我就可以将其写入文件。

我已经按照这个链接来执行了。

首先,您必须找到具有链表的节点,该节点需要线性扫描。然后,通过更新上一个和下一个节点中的引用以相互指向而不是要删除的节点来删除节点。

found.prev.next = found.next
found.next.prev = found.prev

如果你没有找到这个词,就把它加到列表的末尾。

//Double linked list in javascript 
function Node(value) {
this.data = value;
this.previous = null;
this.next = null;
}
function DoublyList() {
this._length = 0;
this.head = null;
this.tail = null;
}
//You can add nodes using 
DoublyList.prototype.add = function(value) {
var node = new Node(value); 
........ and so on
}
//search function can be like
DoublyList.prototype.search = function(value){
var currentNode = this.head;
while (currentNode.data != value) {
currentNode = currentNode.next;
}
return currentNode
}

最新更新