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技术实现Tab页界面之二
Sep 21 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
Jan 06 Javascript
jQuery数据缓存功能的实现思路及简单模拟
May 27 Javascript
兼容IE和FF的图片上传前预览js代码
May 28 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
Bootstrap实现下拉菜单多级联动
Nov 23 Javascript
vue实现淘宝购物车功能
Apr 20 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中数据的批量导入(csv文件)
2006/10/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
php绘制一个矩形的方法
2015/01/24 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
如何表示python中的相对路径
2020/07/08 Python
python获取整个网页源码的方法
2020/08/03 Python
英国女士家居服网站:hush
2017/08/09 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
高中生活自我鉴定
2014/01/18 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
毕业设计致谢语
2015/05/14 职场文书
安全教育日主题班会
2015/08/13 职场文书
岗位聘任协议书
2015/09/21 职场文书