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,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
Textarea根据内容自适应高度
Oct 28 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
详解JavaScript基于面向对象之创建对象(1)
Dec 10 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
微信小程序实现多选删除列表数据功能示例
Jan 15 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
prettier自动格式化去换行的实现代码
Aug 25 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
杏林同学录(九)
2006/10/09 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
JavaScript 事件系统
2010/07/22 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
数组越界问题
2015/10/21 面试题
技校生自我鉴定
2013/12/08 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
护理专业自荐信范文
2014/02/26 职场文书
节能减排倡议书
2014/04/15 职场文书
分公司任命书
2014/06/06 职场文书
真诚的求职信
2014/07/04 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript