JS实现线性表的顺序表示方法示例【经典数据结构】


Posted in Javascript onApril 11, 2017

本文实例讲述了JS实现线性表的顺序表示方法。分享给大家供大家参考,具体如下:

线性表的顺序表示指的是用一组地址连接的存储单元依次存储线性表的数据元素。通常称这种存储结构的线性表为顺序表。

顺序表的特点是以元素在计算机内物理位置相邻来表示数据元素之间的逻辑关系。每一个数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数。也就是说只要确定了存储线性表的起始位置,线性表中的任一元素都可以随机存储,所以说,顺序表是一种随机存取的存储结构。

高级语言中的数组与其相似,所以我们用数组来描述顺序存储结构。

下面描述了逻辑关系的变化

JS实现线性表的顺序表示方法示例【经典数据结构】

下面我们来实现插入和删除的过程

首先是插入

我们在第i(1<=i<=n)个元素之前插入一个元素,需将第i至n个元素向后移动一个位置。代码如下

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 </head>
 <body onload="ListInsert([1,2,3,4],2,5)">
 </body>
 <script type="text/javascript">
 function ListInsert(a,i,e){
  //在a的第i个位置之前插入e
  var j,
  a_len=a.length;
  for(j=a_len-1;j>=i-1;j--){
  a[j+1]=a[j];
  }
  a[i-1]=e;
  alert(a);//1,5,2,3,4
 }
 </script>
</html>

同样的道理,删除第i个元素的代码为

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 </head>
 <body onload="ListDelete([1,2,3,4,5,6,7,8],3)">
 </body>
 <script type="text/javascript">
 function ListDelete(a,i){
  //删除a集合第i个位置的值
  var e=a[i-1],//被删除的元素
  a_len=a.length;
  for(j=i-1;j<=a_len-1;j++){
  a[j-1]=a[j];
  }
  a[j-1]=null;
  alert(a);//1,2,4,5,6,7,8
 }
 </script>
</html>

从上面两个算法可以看出,时间主要耗费在移动元素上,而移动元素的个数取决于插入或删除元素的位置。根据概率论的相关知识,可以得出在顺序存储结构的线性表中插入或删除一个数据元素时,平均约移动表中一般元素。如果表长为n,则上面两个算法的时间复杂度是o(n/2),又由于n/2和n都处于线性阶。所以直接表示为o(n)

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
从数据结构分析看:用for each...in 比 for...in 要快些
Apr 17 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
JS读取XML文件示例代码
Nov 15 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
backbone简介_动力节点Java学院整理
Jul 14 Javascript
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
js实现左右轮播图
Jan 09 Javascript
浅谈JavaScript 声明提升
Sep 14 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
基于vuejs实现一个todolist项目
Apr 11 #Javascript
vue实现todolist单页面应用
Apr 11 #Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 #Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 #Javascript
javascript数组去重常用方法实例分析
Apr 11 #Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 #Javascript
vuejs绑定class和style样式
Apr 11 #Javascript
You might like
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
ThinkPHP控制器详解
2015/07/27 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
旺仔牛奶广告词
2014/03/20 职场文书
中学社团活动总结
2015/05/07 职场文书
爱护环境建议书
2015/09/14 职场文书