摘要:数据结构可以分为列表线性树形图四种基本结构。即承载数据的形式。数据结构中的线性结构有数组和链表,本文即对链表进行简单总结,在后续文章中会实现几种基本的数据结构。
缘起
最近工作上需要依照现有数据生成嵌套json对象形式的组织机构列表,一时觉得无从下手,请教同事大神才知道此乃数据结构相关知识,遂恶补相关基础并在此记录。
数据结构可以分为:1、列表;2、线性;3、树形;4、图 四种基本结构。何为数据结构?我理解就是数据的结构。。。即承载数据的形式。数据结构中的线性结构有数组和链表,本文即对链表进行简单总结,在后续文章中会实现几种基本的数据结构。
链表1 链表是什么
链表相关概念
2 用链表实现数组和其基本操作,以下附上代码
function ARRAY(){ var INDEX=-1; var HEAD=null; var OBJ=null; //添加元素 this.add=function(e){ function Element(value){ this.value=value; } e=new Element(e); if(INDEX==-1){ OBJ=e; HEAD=e; INDEX++; }else{ INDEX++; OBJ.next=e; OBJ=OBJ.next; } return HEAD; } //删除最后一个元素 this.deleteLast=function(){ for(var i=HEAD;i!=undefined;i=i.next){ if(i.next.next==undefined){ i.next=null; } } return HEAD; } //按序号取元素 this.get=function(Inx){ var index=0; for(var i=HEAD;i!=undefined;i=i.next){ index++; if(index==Inx){ return i; } } } //按位置插入元素 this.insert=function(Inx,e){ function Element(value){ this.value=value; } e=new Element(e); if(Inx==0){ e.next=HEAD; HEAD=e; }else{ var currentItem=this.get(Inx); var sufItem=this.get(Inx+1); e.next=sufItem; currentItem.next=e; } return HEAD; } //删除特定位置元素 this.deleteElement=function(Inx){ if(Inx==0){ var sufItem=this.get(Inx+1); HEAD=sufItem; }else{ var preItem=this.get(Inx-1); var sufItem=this.get(Inx+1); preItem.next=sufItem; } return HEAD; } }
同时提供两种遍历链表的方法
//遍历链表(递归) function loop(head){ if(head.next==undefined){ return; } return loop(head.next); }
//遍历链表(非递归) function loopLinkedList(head){ for(var i=head;i!=undefined;i=i.next){ console.log(i); } }
具体使用方法
var obj = new ARRAY(); console.time("addtest"); obj.add("aaa"); obj.add("bbb"); obj.add("ccc"); obj.add("ffffd"); var head=obj.add("eee"); console.log(head); console.timeEnd("addtest");
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81380.html
摘要:线性结构数组与链表线性结构线性数据结构有两端,有时被称为左右,某些情况被称为前后。将两个线性数据结构区分开的方法是添加和移除项的方式,特别是添加和移除项的位置。相对于数组,链表的好处在于,添加或移除元素的时候不需要移动其他元素。 线性结构 数组与链表 线性结构 线性数据结构有两端,有时被称为左右,某些情况被称为前后。你也可以称为顶部和底部,名字都不重要。将两个线性数据结构区分开的方法...
摘要:线性结构数组与链表线性结构线性数据结构有两端,有时被称为左右,某些情况被称为前后。将两个线性数据结构区分开的方法是添加和移除项的方式,特别是添加和移除项的位置。相对于数组,链表的好处在于,添加或移除元素的时候不需要移动其他元素。 线性结构 数组与链表 线性结构 线性数据结构有两端,有时被称为左右,某些情况被称为前后。你也可以称为顶部和底部,名字都不重要。将两个线性数据结构区分开的方法...
摘要:链表与递归已经从底层完整实现了一个单链表这样的数据结构,并且也依托链表这样的数据结构实现了栈和队列,在实现队列的时候对链表进行了一些改进。计算这个区间内的所有数字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现,全部文...
摘要:链表与递归已经从底层完整实现了一个单链表这样的数据结构,并且也依托链表这样的数据结构实现了栈和队列,在实现队列的时候对链表进行了一些改进。计算这个区间内的所有数字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现,全部文...
阅读 3077·2021-11-24 09:38
阅读 1329·2021-09-22 15:27
阅读 2967·2021-09-10 10:51
阅读 1503·2021-09-09 09:33
阅读 916·2021-08-09 13:47
阅读 2069·2019-08-30 13:05
阅读 891·2019-08-29 15:15
阅读 2424·2019-08-29 12:21