下面我们来封装一下js-单向蓝标中的removeAt,remove,isEmpty,size方法
// 7.removeAt方法-传入位置,返回删除的数据!
LinkList.prototype.removeAt=(position)=>{
// 有的删除操作会将删除的数据返回,所以return current.data,如何不删除,正常的返回true就可以啦!
// 1.越界判断
if (position<0||position>=this.length)return null
// 2.判断是否是删除的第一个节点
let current=this.head
if (position===0){
this.head=this.head.next
}else{
let index=0
let previous=null
while (index++
previous=current;
current=current.next
}
// 将前一个节点的next指向,后一个节点的next
previous.next=current.next;
}
// 3.最后千万不要忘记了length—1
this.length-=1
return current.data
}
// 8.remove方法-删除数据
LinkList.prototype.remove=(data)=>{
// 1.获取data数据在链表中的位置
let position=this.indexOf(data)
// 2.根据位置信息删除节点
return this.removeAt(position)
}
// 9.isEmpty方法
LinkList.prototype.isEmpty=()=> {
return this.length===0
}
// 10.size方法
LinkList.prototype.size=()=>{
return this.length
}