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 相关文章推荐
JS写的数字拼图小游戏代码[学习参考]
Oct 29 Javascript
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
Javascript 去除数组的重复元素
May 04 Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
基于JS实现导航条flash导航条
Jun 17 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 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中time()和mktime()方法的区别
2013/09/28 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
PDO::commit讲解
2019/01/27 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
出生公证委托书
2014/04/03 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Python包argparse模块常用方法
2021/06/04 Python
html5调用摄像头截图功能
2022/01/18 Javascript
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS