You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionPriorityQueue(){varitems=[];/** * 优先队列元素带有priority * @param element any * @param priority number */functionQueueElement(element,priority){this.element=element;this.priority=priority;}this.enqueue=function(element,priority){varqueueElement=newQueueElement(element,priority);if(this.isEmpty()){items.push(queueElement);}else{varadded=false;// 如果找到优先级更高的元素,在当前位置插入即可for(vari=0;i<items.length;i++){if(priority<items[i].priority){items.splice(i,0,queueElement);added=true;// 找到一个就可以终止循环了break;}}// 没找到优先级更高的,直接往队列最后推if(!added){items.push(queueElement);}}};this.dequeue=function(){returnitems.shift();};this.front=function(){returnitems[0];};this.isEmpty=function(){returnitems.length===0;};this.clear=function(){items=[];};this.size=function(){returnitems.length;};this.print=function(){console.log(items.toString());};}
单链表
functionSingleLinkedList(){varNode=function(element){this.element=element;this.next=null;};varlength=0;varhead=null;/** * @param element any */this.append=function(element){varnode=newNode(element);varcurrent;if(head===null){head=node;}else{current=head;// 从头部元素开始往后查询while(current.next){current=current.next;}// 在最后一个阶段后插入current.next=node;}length++;};/** * * @param position number * @param element any * @returns {boolean} */this.insert=function(position,element){if(position<0||position>length){returnfalse;}varnode=newNode(element);varcurrent=head;varprevious;varindex=0;if(position===0){node.next=current;head=node;}else{while(index++<position){previous=current;current=current.next;}node.next=current;previous.next=node;}length++;returntrue;};/** * @param position number * @returns {null|*} */this.removeAt=function(position){if(position<0||position>length){returnnull;}varcurrent=head;varprevious;varindex=0;if(position===0){head=current.next;}else{while(index++<position){previous=current;current=current.next;}// 跳过current,连接前后两个节点previous.next=current.next;}length--;returncurrent.element;};this.remove=function(element){varindex=this.indexOf(element);returnthis.removeAt(index);};this.indexOf=function(element){varcurrent=head;varindex=0;while(current){if(element===current.element){returnindex;}index++;current=current.next;}return-1;};this.isEmpty=function(){returnlength===0;};this.size=function(){returnlength;};this.getHead=function(){returnhead;};this.toString=function(){varcurrent=head;varstring='';while(current){string+=','+current.element;current=current.next;}returnstring.slice(1);};this.print=function(){console.log(this.toString());};}
双链表
functionDoubleLinkedList(){varNode=function(element){this.element=element;this.next=null;this.prev=null;};varlength=0;varhead=null;vartail=null;/** * @param element any */this.append=function(element){varnode=newNode(element);varcurrent;if(head===null){head=node;}else{current=head;// 从头部元素开始往后查询while(current.next){current=current.next;}// 在最后一个阶段后插入current.next=node;}length++;};/** * * @param position number * @param element any * @returns {boolean} */this.insert=function(position,element){if(position<0||position>length){returnfalse;}varnode=newNode(element);varcurrent=head;varprevious;varindex=0;if(position===0){if(!head){head=node;tail=node;}else{node.next=current;current.prev=node;head=node;}}elseif(position===length){current=tail;current.next=node;node.prev=current;}else{while(index++<position){previous=current;current=current.next;}node.next=current;previous.next=node;current.prev=node;node.prev=previous;}length++;returntrue;};/** * @param position number * @returns {null|*} */this.removeAt=function(position){if(position<0||position>length){returnnull;}varcurrent=head;varprevious;varindex=0;if(position===0){head=current.next;if(length===1){tail=null;}else{head.prev=null;}}elseif(position===length-1){current=tail;tail=current.prev;tail.next=null;}else{while(index++<position){previous=current;current=current.next;}// 跳过current,连接前后两个节点previous.next=current.next;current.next.prev=previous;}length--;returncurrent.element;};this.remove=function(element){varindex=this.indexOf(element);returnthis.removeAt(index);};this.indexOf=function(element){varcurrent=head;varindex=0;while(current){if(element===current.element){returnindex;}index++;current=current.next;}return-1;};this.isEmpty=function(){returnlength===0;};this.size=function(){returnlength;};this.getHead=function(){returnhead;};this.toString=function(){varcurrent=head;varstring='';while(current){string+=','+current.element;current=current.next;}returnstring.slice(1);};this.print=function(){console.log(this.toString());};}