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 相关文章推荐
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
Aug 10 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
Jul 01 Javascript
js实现select下拉框菜单
Dec 08 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
Jan 04 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
Sep 06 Javascript
vue-property-decorator用法详解
Dec 12 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
基于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
DedeCms模板安装/制作概述
2007/03/11 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
原生js二级联动效果
2017/06/20 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
Python如何发送与接收大型数组
2020/08/07 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
专业实习自我鉴定
2013/10/29 职场文书
经销商培训邀请函
2014/01/21 职场文书
乱世佳人观后感
2015/06/08 职场文书
校园开放日新闻稿
2015/07/17 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android