链表: 每个元素,都有一个指针,指向下一个元素
//链表var head = null;length = 0;class linkedList{constructor(){}append(ele){var cnode = {ele:ele,next:null};if(head === null){head = cnode;}else{//追加到节点var current = head;while(current.next){current = current.next;}current.next = cnode;}length++;}removeAt(pos){//删除第几个元素//检查越界if(pos > -1 && pos < length){var current = head,previous,index = 0;//移除第一项if(pos == 0){head = current.next;}else{while(index++ < pos){previous = current;current = current.next;}//前面的next,指向当前项的next,即干掉当前项previous.next = current.next;}length--;return current.ele;}else{return null;}}insert(pos,ele){if(pos >= 0 && pos <= length){var nodes = {ele:ele,next:null};var current = head,previous,index = 0;if(pos == 0){//第一项插入nodes.next = current;head = nodes;}else{while(index++ < pos){previous = current;current = current.next;}nodes.next ?= current;previous.next = nodes;}length++;return true;}else{return false;}}indexOf(ele){var current = head;var index = -1;while(current){if(current.ele === ?ele){return index;}index++;current = current.next;}return index;}remove(ele){var index = this.indexOf(ele);return this.removeAt(index);}toString(){var current = head;var str = ‘‘;var index = 0;while(current){str = str + current.ele+"-" ?+ index + "\n"; ??index++;current = current.next;}console.log(str);}size(){return length;}isEmpty(){return !length;}getHead(){return head;}}var list = new linkedList();list.append("a");list.append("b");list.append("c");list.insert(2,"bgb");list.append("d");list.toString();
js模拟链表
原文地址:https://www.cnblogs.com/muamaker/p/9197901.html