国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript實(shí)現(xiàn)鏈表

fxp / 2017人閱讀

摘要:什么是鏈表鏈表是一個(gè)集合,是或中的概念。向鏈表中插入一個(gè)值,不需要把后面的每個(gè)元素往后移動(dòng)位置。因?yàn)樵谥胁荒芟褚粯幽菢又苯硬僮髦羔槪袁F(xiàn)在用數(shù)組模擬一個(gè)鏈表。

什么是鏈表

鏈表是一個(gè)集合,是C或C++中的概念。和數(shù)組有什么區(qū)別呢?
鏈表每個(gè)元素有兩部分組成,第一部分是存儲(chǔ)的值,第二部分是記錄了下一個(gè)元素的位置信息。在C中即使下一個(gè)元素的指針,其實(shí)就通過(guò)第二個(gè)屬性能直接拿到下一個(gè)元素的值。

{
value:"",
next:1
}

一個(gè)元素通過(guò)他的next就知道下一個(gè)值是什么。就像一個(gè)鏈子,上一個(gè)元素連著下一個(gè)元素。
向鏈表中插入一個(gè)值,不需要把后面的每個(gè)元素往后移動(dòng)位置。
1.只需要把修改插入位置前一個(gè)元素的next屬性只想插入的值;
2.插入的值的next只插入之后的那個(gè)元素即可。
因?yàn)樵贘avaScript中不能像C一樣那樣直接操作指針,所以現(xiàn)在用數(shù)組模擬一個(gè)鏈表。

javascript版本的鏈表
//比如有一個(gè)集合
let left = [2, 3, 4, 5, 8, 9];
//用另一個(gè)集合對(duì)應(yīng)位置的值來(lái)記錄下一個(gè)元素的索引。每個(gè)值存儲(chǔ)的是需要獲取值的索引,如果沒(méi)有對(duì)應(yīng)的則存-1;
//這個(gè)集合的奧妙在于,它的**索引**和**值**是能串聯(lián)起來(lái)的“一條繩”,索引和值前后銜接。
// [1, 2, 3, 4, 5, -1]
//  0  1  2  3  4   5
let right = [1, 2, 3, 4, 5, -1];
//一個(gè)要插入的值
let middle = 6;
let len = left.length;
left.push(middle);
let t = 0;
while (t != -1) {
  if (left[right[t]] > middle) {
    right[len] = right[t];
    right[t] = len;
    break;
  }
  t = right[t];
}

console.log("輸出結(jié)果:");
console.log(left);
console.log(right);
t = 0;
while (t != -1) {
  console.log(left[t]);
  //這就體現(xiàn)出了索引和值前后銜接的關(guān)系了。注意right的索引用的也是t
  t = right[t];
}
結(jié)果
2 3 4 5 6 8 9
分析

原始:

[2, 3, 4, 5, 8, 9];
[1, 2, 3, 4, 5, -1]

插入后:
所謂的插入是保證輸出的順序像插入的效果。

[2, 3, 4, 5, 8, 9, 6];
[1, 2, 3, 6, 5, -1, 4]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/102428.html

相關(guān)文章

  • 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表

    摘要:實(shí)現(xiàn)移除給定的元素要移除的元素返回值表示移除成功方法說(shuō)明移除單向鏈表中某個(gè)位置的元素。的前端樂(lè)園原文鏈接寒假前端學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法二鏈表 本系列的第一篇文章: 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(一),棧與隊(duì)列第二篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表第三篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(三):集合第四篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與...

    lolomaco 評(píng)論0 收藏0
  • JavaScript 實(shí)現(xiàn)鏈表操作 - 06 Insert Sort

    摘要:需求實(shí)現(xiàn)一個(gè)函數(shù)對(duì)鏈表進(jìn)行升序排列插入排序。關(guān)于插入排序插入排序的介紹可以看,大體邏輯為建立一個(gè)新的空鏈表。遍歷完成,返回新鏈表。代碼如下總結(jié)因?yàn)橛猩蟼€(gè)的函數(shù)的幫助,這個(gè)插入排序?qū)崿F(xiàn)起來(lái)非常簡(jiǎn)單。 TL;DR 2016 年末最后一篇,對(duì)鏈表進(jìn)行插入排序。系列目錄見(jiàn) 前言和目錄 。 需求 實(shí)現(xiàn)一個(gè) insertSort() 函數(shù)對(duì)鏈表進(jìn)行升序排列(插入排序)。實(shí)現(xiàn)過(guò)程中可以使用 上一個(gè) ...

    doodlewind 評(píng)論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 線性表(數(shù)組、棧、隊(duì)列、鏈表

    摘要:每個(gè)線性表上的數(shù)據(jù)最多只有前和后兩個(gè)方向。數(shù)組鏈表隊(duì)列棧等就是線性表結(jié)構(gòu)。非線性表數(shù)據(jù)之間并不是簡(jiǎn)單的前后關(guān)系。不包含任何元素的棧稱(chēng)為空棧。移除棧頂?shù)脑兀瑫r(shí)返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基礎(chǔ)知識(shí)就像是一座大樓的地基,它決定了我們的技術(shù)高度。 我們應(yīng)該多掌握一些可移值的...

    kaka 評(píng)論0 收藏0
  • JavaScript 實(shí)現(xiàn)鏈表操作 - 13 Shuffle Merge

    摘要:需求實(shí)現(xiàn)函數(shù)把兩個(gè)鏈表合并成一個(gè)。新鏈表的節(jié)點(diǎn)是交叉從兩個(gè)鏈表中取的。通過(guò)行的調(diào)換指針,我們可以保證下一次循環(huán)就是對(duì)另一個(gè)鏈表進(jìn)行操作了。這樣一直遍歷到兩個(gè)鏈表末尾,返回結(jié)束。參考資料的代碼實(shí)現(xiàn)的測(cè)試 TL;DR 把兩個(gè)鏈表洗牌合并成一個(gè),系列目錄見(jiàn) 前言和目錄 。 需求 實(shí)現(xiàn)函數(shù) shuffleMerge() 把兩個(gè)鏈表合并成一個(gè)。新鏈表的節(jié)點(diǎn)是交叉從兩個(gè)鏈表中取的。這叫洗牌合并。舉...

    shiguibiao 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)04 - 鏈表

    摘要:類(lèi)表示要加入鏈表的項(xiàng)。循環(huán)鏈表和普通鏈表之間唯一的區(qū)別在于,最后一個(gè)元素指向下一個(gè)元素的指針不是引用,而是指向第一個(gè)元素。這里就不進(jìn)行代碼實(shí)現(xiàn)了,大家可以結(jié)合上面的單向鏈表和雙向鏈表自己實(shí)現(xiàn)一個(gè)循環(huán)鏈表。 一、定義 1.1 概念 前面我們學(xué)習(xí)了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)。數(shù)組(或者也可以稱(chēng)為列表)是一種非常簡(jiǎn)單的存儲(chǔ)數(shù)據(jù)序列的數(shù)據(jù)結(jié)構(gòu)。在這一節(jié),我們要學(xué)習(xí)如何實(shí)現(xiàn)和使用鏈表這種動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu),這...

    cheukyin 評(píng)論0 收藏0
  • JavaScript 實(shí)現(xiàn)鏈表操作 - 11 Alternating Split

    摘要:需求實(shí)現(xiàn)一個(gè)函數(shù),把一個(gè)鏈表切分成兩個(gè)。子鏈表的節(jié)點(diǎn)應(yīng)該是在父鏈表中交替出現(xiàn)的。所以整個(gè)算法的解法就能很容易地用表示。唯一需要考慮的就是在每個(gè)循環(huán)體中判斷節(jié)點(diǎn)該插入哪個(gè)鏈表。也有人使用持續(xù)增長(zhǎng)的配合取余來(lái)做,比如。 TL;DR 把一個(gè)鏈表交替切分成兩個(gè),系列目錄見(jiàn) 前言和目錄 。 需求 實(shí)現(xiàn)一個(gè) alternatingSplit() 函數(shù),把一個(gè)鏈表切分成兩個(gè)。子鏈表的節(jié)點(diǎn)應(yīng)該是在父鏈...

    jsyzchen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<