使用js实现链表数据结构(增 删 该 查 打印)
2021-06-05 13:03
标签:function 控制台 rev 使用 splay 打印 circle list ret //使用js实现链表: function LinkedList(){ 使用js实现链表数据结构(增 删 该 查 打印) 标签:function 控制台 rev 使用 splay 打印 circle list ret 原文地址:https://www.cnblogs.com/lishuge/p/12332880.html
this.head = new Node("head");
}
LinkedList.prototype = {
//查找某一节点
find:function(item){
var currNode = this.head;
while(currNode.next != null && currNode.element != item){
currNode = currNode.next;
}
return currNode;
},
//向某一元素后面插入新节点
insert:function(newElement,item){
var newNode = new Node(newElement);
var current = this.find(item);
newNode.next = current.next;
current.next = newNode;
},
//查找某一节点的前一个节点
findPrevious:function(item){
var currNode = this.head;
while(currNode.next != null&&currNode.next.element != item){
currNode = currNode.next;
}
return currNode;
},
//删除某一节点
remove:function(item){
var prevNode = this.findPrevious(item);
if(!(prevNode.next == null)){
prevNode.next = prevNode.next.next;
}
},
//修改某一节点的数据
edit:function(item,newItem){
var node = this.find(item);
node.element = newItem;
},
//在控制台打印出所有节点
display:function(){
var currNode = this.head;
console.log(currNode.element)
while(currNode.next != null){
console.log(currNode.next.element);
currNode = currNode.next;
}
},
//判断单项链表是否有循环
//设置两个指针互相追逐。一个指针每次前进一步,第二个指针每次前进两步,如果有相遇,则说明有环。
hasCircle() {
var slowPointer = this.head;
var fastPointer = this.head;
while(fastPointer != null){
slowPointer = slowPointer.next;
fastPointer = fastPointer.next.next;
if(slowPointer == fastPointer){
return true;
上一篇:7.HTML图像标签
下一篇:模拟实现js中的new操作符