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中几种常见排序算法小结
Feb 22 Javascript
xml转json的js代码
Aug 28 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
May 11 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
微信小程序仿美团城市选择
Jun 06 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
Jan 19 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
Apr 24 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 Javascript
详解element上传组件before-remove钩子问题解决
Apr 08 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP执行速率优化技巧小结
2008/03/15 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
DOM相关内容速查手册
2007/02/07 Javascript
Javascript 刷新全集常用代码
2009/11/22 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
Bootstrap Table使用整理(一)
2017/06/09 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
保洁主管岗位职责
2013/11/20 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
农民工讨薪标语
2014/06/26 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript