我只写了单链表,这样显得代码少点,毕竟双向链表和循环链表其实就多几个属性。
参考:https://www.jianshu.com/p/f254ec665e57
/*======定义结构======*/
var node=function(element){
this.element=element
this.next=null
}
var linkedList=function(){
this.head=new node("head")
this.find=find
this.insert=insert
this.update=update
this.remove=remove
}
/*======查找======*/
var find=function(item){
let currNode=this.head
while(currNode.element!==item){
currNode=currNode.next
}
return currNode
}
/*======插入======*/
/**
*newElement:一个新节点,item:链表的目标节点
*1.查找找到目标节点,将新节点的next指向目标节点的下一个节点
*2.将目标节点的next指向这个新节点
*/
var insert=function(newElement,item){
let newNode=new node(newElement)
let currNode=this.find(item)
newNode.next=currNode.next
currNode.next=newNode
}
/*======修改======*/
/**
*查找到目标节点,将其element修改
*/
var update=function(item,newItem){
let currNode=this.find(item)
currNode.element=newItem
}
/*======删除======*/
/**
*找到匹配节点的前一个节点,将其next指向当前节点的下一个节点,即删除当前节点
*/
var remove=function(item){
let currNode=this.head
while(currNode.next!==null && currNode.next.element!==item){
currNode=currNode.next
}
if(currNode.next!==null){
currNode.next=currNode.next.next
}
}
/*======测试代码======*/
var list=new linkedList();
list.insert('first','head')
list.insert('second','first')
list.insert('third','second')
console.log(list)
list.find('first')
console.log(list.find('first'))
list.update('third','three')
console.log(list)
list.remove('second')
console.log(list)
本文介绍了如何使用JavaScript实现单链表的数据结构,包括定义结构、查找、插入、更新和删除等基本操作。通过示例代码展示了如何创建链表、在链表中插入新元素、修改元素以及删除元素的方法。
6195

被折叠的 条评论
为什么被折叠?



