用js对象创建链表

it2022-05-05  126

//以下是一个链表类

function LinkedList(){

//Node表示要加入列表的项 var Node=function(element){   this.element=element;   this.next=null; }; var length=0;//存储列表项的数量 var head=null;//head存储的是第一个节点的引用

//向链表尾部追加元素 this.append=function(element){   var node=new Node(element),     current;   if(head===null){     head=node;    }else{     current=node;     while(current.next){       current=current.next;     }     current.next=node;   }   length++; };

//在链表的任意位置插入元素 this.insert=function(position,element){   if(position>=0&&position<=length){     var node=new Node(element),       current=head,       previous,       index=0;     if(position===0){       node.next=current;       head=node;     }else{       while(index<position){         previous=current;         previous.next=node;         index++;       }       node.next=current;       previous.next=node;     }     length++;     return true;   }else{     return false;   } };

//从链表中移除元素 this.removeAt=function(position){   if(position>-1 && position<length){     var current=head,       previous,       index=0;     if(position===0){       head=current.next;     }else{       while(index<position){         previous=current;         current=current.next;         index++;       }       previous.next=current.next;     }     length--;     return current.element;   }else{     return null;   } };

//返回元素在链表中的位置 this.indexOf=function(element){   var current=head,     index=-1;   while(current){     if(element===current.element){       return index;     }     index++;     current=current.next;   }   return -1; };

//移除某个元素 this.remove=function(element){   var index=this.indexOf(element);   return this.removeAt(index); };

//判断链表是否为空

this.isEmpty=function(){  return length===0; };

//返回链表的长度 this.size=function(){ return length; };

//把LinkedList对象转换成一个字符串

this.toString=function(){   var current=head,   string="";   while(current){     string=current.element;     current=current.next;   }   return string; };};

var list=new LinkedList();list.append(15);list.append(10);list.insert(1,11);list.removeAt(2)console.log(list.size());

转载于:https://www.cnblogs.com/jinxiangli/p/5937053.html


最新回复(0)