资讯专栏INFORMATION COLUMN

前言与链表实现数组

ingood / 1275人阅读

摘要:数据结构可以分为列表线性树形图四种基本结构。即承载数据的形式。数据结构中的线性结构有数组和链表,本文即对链表进行简单总结,在后续文章中会实现几种基本的数据结构。

缘起

最近工作上需要依照现有数据生成嵌套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

相关文章

  • 线性结构 数组链表

    摘要:线性结构数组与链表线性结构线性数据结构有两端,有时被称为左右,某些情况被称为前后。将两个线性数据结构区分开的方法是添加和移除项的方式,特别是添加和移除项的位置。相对于数组,链表的好处在于,添加或移除元素的时候不需要移动其他元素。 线性结构 数组与链表 线性结构 线性数据结构有两端,有时被称为左右,某些情况被称为前后。你也可以称为顶部和底部,名字都不重要。将两个线性数据结构区分开的方法...

    xi4oh4o 评论0 收藏0
  • 线性结构 数组链表

    摘要:线性结构数组与链表线性结构线性数据结构有两端,有时被称为左右,某些情况被称为前后。将两个线性数据结构区分开的方法是添加和移除项的方式,特别是添加和移除项的位置。相对于数组,链表的好处在于,添加或移除元素的时候不需要移动其他元素。 线性结构 数组与链表 线性结构 线性数据结构有两端,有时被称为左右,某些情况被称为前后。你也可以称为顶部和底部,名字都不重要。将两个线性数据结构区分开的方法...

    edagarli 评论0 收藏0
  • 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现-链表与递归

    摘要:链表与递归已经从底层完整实现了一个单链表这样的数据结构,并且也依托链表这样的数据结构实现了栈和队列,在实现队列的时候对链表进行了一些改进。计算这个区间内的所有数字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现,全部文...

    lastSeries 评论0 收藏0
  • 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现-链表与递归

    摘要:链表与递归已经从底层完整实现了一个单链表这样的数据结构,并且也依托链表这样的数据结构实现了栈和队列,在实现队列的时候对链表进行了一些改进。计算这个区间内的所有数字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【从蛋壳到满天飞】JAVA 数据结构解析和算法实现,全部文...

    alanoddsoff 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<