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 相关文章推荐
表单的焦点顺序tabindex和对应enter键提交
Jan 04 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
Feb 17 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
Dec 03 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
Mar 24 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
Sep 16 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
Jun 24 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
node解析修改nginx配置文件操作实例分析
Nov 06 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的简单采集数据入库程序【续篇】
2014/07/30 PHP
php计算年龄精准到年月日
2015/11/17 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jquery 学习笔记一
2010/04/07 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
使用js实现数据格式化
2014/12/03 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
pandas实现导出数据的四种方式
2020/12/13 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
施工资料员岗位职责
2014/01/06 职场文书
课外科技活动总结
2014/08/27 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2014年建筑工作总结
2014/11/26 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
教师节慰问信
2015/02/15 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Feign调用传输文件异常的解决
2021/06/24 Java/Android