码迷,mamicode.com
首页 > Web开发 > 详细

js模拟链表

时间:2018-06-19 13:34:37      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:ret   ==   tor   The   console   end   一个   const   eth   

链表: 每个元素,都有一个指针,指向下一个元素

	//链表

			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模拟链表

标签:ret   ==   tor   The   console   end   一个   const   eth   

原文地址:https://www.cnblogs.com/muamaker/p/9197901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!