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全局变量封装模块实现代码
Nov 28 Javascript
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
javascript过滤数组重复元素的实现方法
May 03 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 Javascript
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
基于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中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Django--权限Permissions的例子
2019/08/28 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
数控个人求职信范文
2014/02/03 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
redis实现排行榜功能
2021/05/24 Redis