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 类、命名空间、代码组织代码
Jul 31 Javascript
jquery解析xml字符串示例分享
Mar 25 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
BootStrap的两种模态框方式
May 10 Javascript
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
vue中子组件的methods中获取到props中的值方法
Aug 27 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 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
我的论坛源代码(四)
2006/10/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
手术室护士自我鉴定
2013/10/14 职场文书
协议书样本
2014/04/23 职场文书
房地产推广策划方案
2014/05/19 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
小组名称和口号
2014/06/09 职场文书
商超业务员岗位职责
2015/02/13 职场文书
学校重阳节活动总结
2015/03/24 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
asyncio异步编程之Task对象详解
2022/03/13 Python
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL