同单向链表的实现
- 只是多了一个prev, 明确指向
class NodeList{
constructor(rank,name,desc){
this.rank=rank
this.name=name
this.desc=desc
this.prev
this.next
}
showNode(){
console.log(`rank:${this.rank},name:${this.name},desc:${this.desc},`);
}
}
class singleNode{
constructor(){
this.head=new NodeList(0,'','')
}
isEmpty(){
return this.head.next==null;
}
addNode(rank,name,desc){
let temp=this.head
while(true){
if(temp.next==null){
break;
}
temp=temp.next
}
let newTemp=new NodeList(rank,name,desc)
temp.next=newTemp
newTemp.prev=temp
}
insertNode(rank,name,desc){
let temp=this.head
while(true){
if(temp.next==null)break;
if(rank<temp.next.rank){
break;
}
temp=temp.next
}
let temp2=temp.next
let newTemp=new NodeList(rank,name,desc)
temp.next=newTemp
newTemp.prev=temp
newTemp.next=temp2
temp2.prev=newTemp
}
delNode(rank){
let temp=this.head
while(true){
if(temp.next==null)break;
if(rank==temp.next.rank)break;
temp=temp.next
}
let temp2=temp.next
temp.next=temp2.next
temp2.next.prev=temp2.prev
}
showNode(){
let temp=this.head
if(this.isEmpty())return;
while(true){
if(temp.next==null)break;
temp=temp.next
temp.showNode()
}
}
}
let a=new singleNode()
a.addNode(1,'孙悟空','跑得快')
a.addNode(3,'沙和尚','做的多')
a.insertNode(2,'猪八戒','吃的多')
a.delNode(2)
a.showNode()
console.log(a);