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 相关文章推荐
javascript实现仿银行密码输入框效果的代码
Dec 13 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
Aug 22 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
AngularJS教程之MVC体系结构详解
Aug 16 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
Node.js学习之查询字符串解析querystring详解
Sep 28 Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
Nov 06 Javascript
H5实现手机拍照和选择上传功能
Dec 18 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
西班牙在线光学:Visual-Click
2020/06/22 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
信息技术教学反思
2014/02/12 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
毕业生个人总结
2015/02/28 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
导游词之天下银坑景区
2019/11/21 职场文书