JS實(shí)現(xiàn)線性表的順序表示方法示例【經(jīng)典數(shù)據(jù)結(jié)構(gòu)】
本文實(shí)例講述了JS實(shí)現(xiàn)線性表的順序表示方法。分享給大家供大家參考,具體如下:
線性表的順序表示指的是用一組地址連接的存儲(chǔ)單元依次存儲(chǔ)線性表的數(shù)據(jù)元素。通常稱這種存儲(chǔ)結(jié)構(gòu)的線性表為順序表。
順序表的特點(diǎn)是以元素在計(jì)算機(jī)內(nèi)物理位置相鄰來表示數(shù)據(jù)元素之間的邏輯關(guān)系。每一個(gè)數(shù)據(jù)元素的存儲(chǔ)位置都和線性表的起始位置相差一個(gè)和數(shù)據(jù)元素在線性表中的位序成正比的常數(shù)。也就是說只要確定了存儲(chǔ)線性表的起始位置,線性表中的任一元素都可以隨機(jī)存儲(chǔ),所以說,順序表是一種隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)。
高級(jí)語言中的數(shù)組與其相似,所以我們用數(shù)組來描述順序存儲(chǔ)結(jié)構(gòu)。
下面描述了邏輯關(guān)系的變化

下面我們來實(shí)現(xiàn)插入和刪除的過程
首先是插入
我們?cè)诘趇(1<=i<=n)個(gè)元素之前插入一個(gè)元素,需將第i至n個(gè)元素向后移動(dòng)一個(gè)位置。代碼如下
<!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個(gè)位置之前插入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個(gè)元素的代碼為
<!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個(gè)位置的值
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>
從上面兩個(gè)算法可以看出,時(shí)間主要耗費(fèi)在移動(dòng)元素上,而移動(dòng)元素的個(gè)數(shù)取決于插入或刪除元素的位置。根據(jù)概率論的相關(guān)知識(shí),可以得出在順序存儲(chǔ)結(jié)構(gòu)的線性表中插入或刪除一個(gè)數(shù)據(jù)元素時(shí),平均約移動(dòng)表中一般元素。如果表長為n,則上面兩個(gè)算法的時(shí)間復(fù)雜度是o(n/2),又由于n/2和n都處于線性階。所以直接表示為o(n)
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript實(shí)現(xiàn)在數(shù)組中查找不同順序排列的字符串
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的查找算法示例
- js基本算法:冒泡排序,二分查找的簡單實(shí)例
- JavaScript黑洞數(shù)字之運(yùn)算路線查找算法(遞歸算法)實(shí)例
- js實(shí)現(xiàn)的二分查找算法實(shí)例
- JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法
- javascript下查找父節(jié)點(diǎn)的簡單方法
- js中通過父級(jí)進(jìn)行查找定位元素
- JS查找字符串中出現(xiàn)次數(shù)最多的字符
- javascript實(shí)現(xiàn)二分查找法實(shí)現(xiàn)代碼
- js查找節(jié)點(diǎn)的方法小結(jié)
- 基于JavaScript實(shí)現(xiàn)的順序查找算法示例
相關(guān)文章
Webpack devServer中的 proxy 實(shí)現(xiàn)跨域的解決
這篇文章主要介紹了Webpack devServer中的 proxy 實(shí)現(xiàn)跨域的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
JS實(shí)現(xiàn)課程表小程序(仿超級(jí)課程表)加入自定義背景功能
這篇文章主要介紹了JS實(shí)現(xiàn)課程表小程序(仿超級(jí)課程表)加入自定義背景功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
JavaScript中實(shí)現(xiàn)PHP的打亂數(shù)組函數(shù)shuffle實(shí)例
這篇文章主要介紹了JavaScript中實(shí)現(xiàn)PHP的打亂數(shù)組函數(shù)shuffle實(shí)例,本文用2種方法實(shí)現(xiàn)了類似PHP的打亂數(shù)組函數(shù)shuffle函數(shù),需要的朋友可以參考下2014-10-10
typeScript?核心基礎(chǔ)之接口interface
本篇文章主要介紹?typeScript?中接口是啥?如何定義的?接口是如何進(jìn)行擴(kuò)展的以及類如何實(shí)現(xiàn)接口,接下來和小編一起進(jìn)入下面文章一起學(xué)習(xí)?typeScript?接口2022-02-02
JS實(shí)現(xiàn)table表格內(nèi)針對(duì)某列內(nèi)容進(jìn)行即時(shí)搜索篩選功能
這篇文章主要介紹了JS實(shí)現(xiàn)table表格內(nèi)針對(duì)某列內(nèi)容進(jìn)行即時(shí)搜索篩選功能,涉及javascript針對(duì)HTML元素的遍歷、屬性動(dòng)態(tài)修改相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
js中setTimeout的妙用--防止循環(huán)超時(shí)
本文主要介紹了使用setTimeout實(shí)現(xiàn)防止循環(huán)超時(shí)的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03

