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 相关文章推荐
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
再谈Angular4 脏值检测(性能优化)
Apr 23 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
原生JS实现留言板功能
Feb 08 Javascript
基于js判断浏览器是否支持webGL
Apr 18 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
利用H5api实现时钟的绘制(javascript)
Sep 13 Javascript
实现AJAX异步调用和局部刷新的基本步骤
Mar 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
crontab无法执行php的解决方法
2016/01/25 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
javascript 函数使用说明
2010/04/07 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python递归实现快速排序
2018/08/18 Python
python实现Flappy Bird源码
2018/12/24 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
法律专业推荐信范文
2013/11/29 职场文书
服装机修工岗位职责
2013/12/26 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
信仰纪录片观后感
2015/06/08 职场文书
小学毕业感言200字
2015/07/30 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python