国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

這篇具有很好參考價(jià)值的文章主要介紹了線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 數(shù)組

數(shù)組定義

??數(shù)組(Array)是有序的元素序列。屬于線性結(jié)構(gòu)(有且僅有一個(gè)前驅(qū)、有且僅有一個(gè)后繼)。

數(shù)組特點(diǎn)

??數(shù)組的關(guān)鍵在于在內(nèi)存中的物理地址對(duì)應(yīng)的是一段連續(xù)的內(nèi)存。這意味著如果想要在任意位置刪除/新增一個(gè)元素,那么該位置往后的所有元素,都需要往前挪/往后挪一個(gè)位置。假設(shè)數(shù)組的長度是 n,那么因增加/刪除操作導(dǎo)致需要移動(dòng)的元素?cái)?shù)量,就會(huì)隨著數(shù)組長度 n 的增大而增大,呈一個(gè)線性關(guān)系。所以說數(shù)組增加/刪除操作對(duì)應(yīng)的時(shí)間復(fù)雜度就是 O(n)

在js中的數(shù)組比較特殊,如果我們?cè)谝粋€(gè)數(shù)組中只定義了一種類型的元素,比如:

const arr = [1,2,3,4]

它是一個(gè)純數(shù)字?jǐn)?shù)組,那么對(duì)應(yīng)的確實(shí)是連續(xù)內(nèi)存。
但如果我們定義了不同類型的元素:

const arr = ['haha', 1, {a:1}]

它對(duì)應(yīng)的就是一段非連續(xù)的內(nèi)存。此時(shí),JS 數(shù)組不再具有數(shù)組的特征,其底層使用哈希映射分配內(nèi)存空間,是由對(duì)象鏈表來實(shí)現(xiàn)的。
謹(jǐn)記“JS 數(shù)組未必是真正的數(shù)組

2. 棧和隊(duì)列(操作受限的數(shù)組)

??棧是一種后進(jìn)先出(LIFO,Last In First Out)的數(shù)據(jù)結(jié)構(gòu)。——只用 pop 和 push 完成增刪的“數(shù)組”

  • 只允許從尾部添加元素
  • 只允許從尾部取出元素

隊(duì)列

??隊(duì)列(Queue)是一種先進(jìn)先出(FIFO,F(xiàn)irst In First Out)的數(shù)據(jù)結(jié)構(gòu)?!挥?push 和 shift 完成增刪的“數(shù)組”。在棧元素出棧時(shí),我們關(guān)心的是棧頂元素(數(shù)組的最后一個(gè)元素);隊(duì)列元素出隊(duì)時(shí),我們關(guān)心的則是隊(duì)頭元素(數(shù)組的第一個(gè)元素)。

3. 鏈表

??鏈表和數(shù)組相似,線性結(jié)構(gòu)(有且僅有一個(gè)前驅(qū)、有且僅有一個(gè)后繼),不同點(diǎn)在于,鏈表中,數(shù)據(jù)單位的名稱叫做“結(jié)點(diǎn)”,而結(jié)點(diǎn)和結(jié)點(diǎn)的分布,在內(nèi)存中可以是離散的
一個(gè)內(nèi)容為1->2->3->4->5的鏈表,在內(nèi)存中的形態(tài)可以是散亂如下的:
線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

在鏈表中,每一個(gè)結(jié)點(diǎn)的結(jié)構(gòu)都包括了兩部分的內(nèi)容:數(shù)據(jù)域和指針域。JS 中的鏈表,是以嵌套的對(duì)象的形式來實(shí)現(xiàn)的:

{
    // 數(shù)據(jù)域
    val: 1,
    // 指針域,指向下一個(gè)結(jié)點(diǎn)
    next: {
        val:2,
        next: ...
    }
}

數(shù)據(jù)域存儲(chǔ)的是當(dāng)前結(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù)值,而指針域則代表下一個(gè)結(jié)點(diǎn)(后繼結(jié)點(diǎn))的引用。
線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

創(chuàng)建鏈表:

function ListNode(val) {
    this.val = val;
    this.next = null;
}
const node = new ListNode(1)  
node.next = new ListNode(2)

鏈表元素的添加和刪除操作,本質(zhì)上都是在圍繞 next 指針做文章,例如在節(jié)點(diǎn)1和節(jié)點(diǎn)2之間插入節(jié)點(diǎn)3:
線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

// 如果目標(biāo)結(jié)點(diǎn)本來不存在,那么記得手動(dòng)創(chuàng)建
const node3 = new ListNode(3)     
// 把node3的 next 指針指向 node2(即 node1.next)
node3.next = node1.next
// 把node1的 next 指針指向 node3
node1.next = node3

刪除節(jié)點(diǎn)3:

node1.next = node3.next 

在涉及鏈表刪除操作的題目中,重點(diǎn)不是定位目標(biāo)結(jié)點(diǎn),而是定位目標(biāo)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)。做題時(shí),完全可以只使用一個(gè)指針(引用),這個(gè)指針用來定位目標(biāo)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)。

總結(jié):鏈表的插入/刪除效率較高,而訪問效率較低;數(shù)組的訪問效率較高,而插入效率較低。文章來源地址http://www.zghlxwxcb.cn/news/detail-837667.html

到了這里,關(guān)于線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇

    數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇

    線性結(jié)構(gòu)-棧 本系列為C++數(shù)據(jù)結(jié)構(gòu)系列,會(huì)介紹 線性結(jié)構(gòu),簡單樹,特殊樹,簡單圖等。本文為線性結(jié)構(gòu)部分。 線性結(jié)構(gòu) 【 3 】鏈表:單鏈表、雙向鏈表、循環(huán)鏈表 【 3 】棧 【 3 】隊(duì)列 棧是Stack一個(gè)后進(jìn)先出Last In First Out,LIFO的線性表,他要求只在表尾對(duì)數(shù)據(jù)執(zhí)行刪除和插

    2024年02月16日
    瀏覽(26)
  • 【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

    【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱為 隊(duì)尾(Tail/Rear) 出隊(duì)列:進(jìn)行刪除操作的一端稱為 隊(duì)頭(Head/Front) 在Java中, Queue是個(gè)接口,底層是通過鏈表實(shí)現(xiàn)的。

    2023年04月15日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表之棧、隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)】線性表之棧、隊(duì)列

    前面兩篇文章講述了關(guān)于線性表中的順序表與鏈表,這篇文章繼續(xù)講述線性表中的 棧和隊(duì)列。 這里講述的兩種線性表與前面的線性表不同,只允許在一端入數(shù)據(jù),一段出數(shù)據(jù),詳細(xì)內(nèi)容請(qǐng)看下面的文章。 順序表與鏈表兩篇文章的鏈接: 線性表之順序表 線性表之鏈表 注意:

    2024年02月06日
    瀏覽(94)
  • 【數(shù)據(jù)結(jié)構(gòu)】受限制的線性表——隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)】受限制的線性表——隊(duì)列

    ??????????個(gè)人主頁?????????? ??????????數(shù)據(jù)結(jié)構(gòu)專欄?????????? ??????????上一篇文章:特殊的線性表——棧?????????? 上一章我們講了一種特殊的線性表只能在表尾進(jìn)行插入和刪除操作,接下來我們講一個(gè)和棧很相似的數(shù)據(jù)結(jié)構(gòu),它也是一種特

    2024年04月10日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)篇】線性表2 —— 棧和隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)篇】線性表2 —— 棧和隊(duì)列

    前言:上一篇我們介紹了順序表和鏈表 (https://blog.csdn.net/iiiiiihuang/article/details/132615465?spm=1001.2014.3001.5501), 這一篇我們將介紹棧和隊(duì)列,棧和隊(duì)列都是基于順序表和鏈表來實(shí)現(xiàn)的 目錄 棧(Stack) 什么是棧 ? 棧的方法 和 使用 棧的模擬實(shí)現(xiàn)? 先初始化一下棧? 往棧里插入

    2024年02月09日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】六、線性表中的隊(duì)列(C語言 -- 鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)隊(duì)列)

    【數(shù)據(jù)結(jié)構(gòu)初階】六、線性表中的隊(duì)列(C語言 -- 鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)隊(duì)列)

    ========================================================================= 相關(guān)代碼gitee自取 : C語言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據(jù)結(jié)構(gòu)初階】五、線性表中的棧(C語言 -- 順序表實(shí)現(xiàn)棧)_高高的胖子的博客-CSDN博客 ?

    2024年02月08日
    瀏覽(26)
  • Java 數(shù)據(jù)結(jié)構(gòu)篇-用鏈表、數(shù)組實(shí)現(xiàn)隊(duì)列(數(shù)組實(shí)現(xiàn):循環(huán)隊(duì)列)

    Java 數(shù)據(jù)結(jié)構(gòu)篇-用鏈表、數(shù)組實(shí)現(xiàn)隊(duì)列(數(shù)組實(shí)現(xiàn):循環(huán)隊(duì)列)

    ??博客主頁:?【 小扳_-CSDN博客】 ?感謝大家點(diǎn)贊??收藏?評(píng)論? ? 文章目錄 ? ? ? ? 1.0 隊(duì)列的說明 ????????1.1 隊(duì)列的幾種常用操作 ? ? ? ? 2.0 使用鏈表實(shí)現(xiàn)隊(duì)列說明 ????????2.1 鏈表實(shí)現(xiàn)隊(duì)列 ????????2.2 鏈表實(shí)現(xiàn)隊(duì)列 - 入棧操作 ????????2.3 鏈表實(shí)現(xiàn)隊(duì)

    2024年02月05日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)_棧、隊(duì)列和數(shù)組

    數(shù)據(jù)結(jié)構(gòu)_棧、隊(duì)列和數(shù)組

    目錄 1. 棧 1.1 棧的定義 1.2 棧的基本操作 1.3 棧的順序存儲(chǔ)結(jié)構(gòu) 1.3.1 順序棧 1.3.2 順序棧的基本運(yùn)算 1.3.3 共享?xiàng)?1.4 棧的鏈?zhǔn)酱鎯?chǔ) 1.5 棧相關(guān)應(yīng)用 2. 隊(duì)列 2.1 隊(duì)列的定義 2.2 隊(duì)列的基本操作 2.3 隊(duì)列的順序存儲(chǔ) 2.4 循環(huán)隊(duì)列 2.4.1 循環(huán)隊(duì)列的操作 2.5 隊(duì)列的鏈?zhǔn)酱鎯?chǔ) 2.5.1 鏈?zhǔn)疥?duì)列的

    2024年02月04日
    瀏覽(40)
  • 【數(shù)據(jù)結(jié)構(gòu)】數(shù)組實(shí)現(xiàn)隊(duì)列(詳細(xì)版)

    【數(shù)據(jù)結(jié)構(gòu)】數(shù)組實(shí)現(xiàn)隊(duì)列(詳細(xì)版)

    目錄 隊(duì)列的定義 普通順序隊(duì)列的劣勢(shì)——與鏈隊(duì)列相比? 順序隊(duì)列實(shí)現(xiàn)方法: 一、動(dòng)態(tài)增長隊(duì)列 ?1、初始化隊(duì)列 ?2、元素入隊(duì) ?3、判斷隊(duì)列是否為空 ?4、元素出隊(duì) ?5、獲取隊(duì)首元素 6、獲取隊(duì)尾元素 ?7、獲取隊(duì)列元素個(gè)數(shù) 8、銷毀隊(duì)列 ?總結(jié): 動(dòng)態(tài)增長隊(duì)列完整測(cè)試代

    2024年04月28日
    瀏覽(22)
  • C語言數(shù)據(jù)結(jié)構(gòu)——線性表之棧和隊(duì)列

    C語言數(shù)據(jù)結(jié)構(gòu)——線性表之棧和隊(duì)列

    為什么會(huì)定義棧和隊(duì)列這兩種數(shù)據(jù)結(jié)構(gòu)呢? 原因在于: 之所以會(huì)定義棧和隊(duì)列這樣的數(shù)據(jù)結(jié)構(gòu) 是因?yàn)樗麄冇袃纱筇匦?: 第一: 他們可以保存程序運(yùn)行路徑中各個(gè)點(diǎn)的信息,以便用于回溯操作或其他需要訪問已經(jīng)訪問過的節(jié)點(diǎn)信息的操作。 比如: 棧用于解決迷宮問題,就

    2023年04月11日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包