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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
javascript css float属性的特殊写法
Nov 13 Javascript
jquery validate.js表单验证的基本用法入门
May 13 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 Javascript
AngularJs  Understanding Angular Templates
Sep 02 Javascript
angularJS Provider、factory、service详解及实例代码
Sep 21 Javascript
用jquery快速解决IE输入框不能输入的问题
Oct 04 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python的keyword模块用法实例分析
2015/06/30 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python常见排序算法基础教程
2017/04/13 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python实现TCP通信的示例代码
2019/09/09 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
创业计划书撰写原则
2014/01/25 职场文书
敬老模范事迹
2014/05/21 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android