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 相关文章推荐
javascript Array.remove() 数组删除
Aug 06 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 Javascript
jQuery实现图片加载完成后改变图片大小的方法
Mar 29 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
Jul 24 Javascript
javascript实现电脑和手机版样式切换
Nov 10 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
使用javascript解析二维码的三种方式
Nov 11 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 XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP闭包实例解析
2014/09/08 PHP
php数组随机排序实现方法
2015/06/13 PHP
PHP多态代码实例
2015/06/26 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP中的表达式简述
2016/05/29 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python对字典进行排序实例
2014/09/25 Python
使用Python生成url短链接的方法
2015/05/04 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
git进行版本控制心得详谈
2017/12/10 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
HTTP状态码详解
2021/03/18 杂记
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
银行毕业实习自我鉴定
2013/09/19 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
授权委托书样本
2014/04/03 职场文书
公司员工培训管理制度
2015/08/04 职场文书
2019广播稿怎么写
2019/04/17 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android