0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見的數(shù)據(jù)結(jié)構(gòu)有哪些

jf_78858299 ? 來源: JS每日一題 ? 作者: 灰灰 ? 2023-04-06 17:26 ? 次閱讀

一、是什么

數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式,是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合

前面講到,一個(gè)程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)是實(shí)現(xiàn)算法的基礎(chǔ),選擇合適的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率

數(shù)據(jù)元素相互之間的關(guān)系稱為結(jié)構(gòu),根據(jù)數(shù)據(jù)元素之間關(guān)系的不同特性,通常有如下四類基本的結(jié)構(gòu):

  • 集合結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素間的關(guān)系是“屬于同一個(gè)集合”
  • 線性結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對(duì)一的關(guān)系
  • 樹型結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對(duì)多的關(guān)系
  • 圖形結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著多對(duì)多的關(guān)系,也稱網(wǎng)狀結(jié)構(gòu)

由于數(shù)據(jù)結(jié)構(gòu)種類太多,邏輯結(jié)構(gòu)可以再分成為:

  • 線性結(jié)構(gòu):有序數(shù)據(jù)元素的集合,其中數(shù)據(jù)元素之間的關(guān)系是一對(duì)一的關(guān)系,除了第一個(gè)和最后一個(gè)數(shù)據(jù)元素之外,其它數(shù)據(jù)元素都是首尾相接的
  • 非線性結(jié)構(gòu):各個(gè)數(shù)據(jù)元素不再保持在一個(gè)線性序列中,每個(gè)數(shù)據(jù)元素可能與零個(gè)或者多個(gè)其他數(shù)據(jù)元素發(fā)生關(guān)聯(lián)

圖片

二、有哪些

常見的數(shù)據(jù)結(jié)構(gòu)有如下:

  • 數(shù)組
  • 隊(duì)列
  • 鏈表
  • 散列表

數(shù)組

在程序設(shè)計(jì)中,為了處理方便, 一般情況把具有相同類型的若干變量按有序的形式組織起來,這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組

一種特殊的線性表,只能在某一端插入和刪除的特殊線性表,按照先進(jìn)后出的特性存儲(chǔ)數(shù)據(jù)

先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)

隊(duì)列

跟?;疽恢拢彩且环N特殊的線性表,其特性是先進(jìn)先出,只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作

鏈表

是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的

鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成

一般情況,每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域

樹是典型的非線性結(jié)構(gòu),在樹的結(jié)構(gòu)中,有且僅有一個(gè)根結(jié)點(diǎn),該結(jié)點(diǎn)沒有前驅(qū)結(jié)點(diǎn)。在樹結(jié)構(gòu)中的其他結(jié)點(diǎn)都有且僅有一個(gè)前驅(qū)結(jié)點(diǎn),而且可以有兩個(gè)以上的后繼結(jié)點(diǎn)

一種非線性結(jié)構(gòu)。在圖形結(jié)構(gòu)中,數(shù)據(jù)結(jié)點(diǎn)一般稱為頂點(diǎn),而邊是頂點(diǎn)的有序偶對(duì)。如果兩個(gè)頂點(diǎn)之間存在一條邊,那么就表示這兩個(gè)頂點(diǎn)具有相鄰關(guān)系

堆是一種特殊的樹形數(shù)據(jù)結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都有一個(gè)值,特點(diǎn)是根結(jié)點(diǎn)的值最?。ɑ蜃畲螅?,且根結(jié)點(diǎn)的兩個(gè)子樹也是一個(gè)堆

散列表

若結(jié)構(gòu)中存在關(guān)鍵字和K相等的記錄,則必定在f(K)的存儲(chǔ)位置上,不需比較便可直接取得所查記錄

三、區(qū)別

上述的數(shù)據(jù)結(jié)構(gòu),之前的區(qū)別可以分成線性結(jié)構(gòu)和非線性結(jié)構(gòu):

  • 線性結(jié)構(gòu)有:數(shù)組、棧、隊(duì)列、鏈表等
  • 非線性結(jié)構(gòu)有:樹、圖、堆等
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)結(jié)構(gòu)

    1.數(shù)據(jù)結(jié)構(gòu)的概念 所謂數(shù)據(jù)結(jié)構(gòu)是指由某一數(shù)據(jù)對(duì)象及該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系組成的集合。成員之間的關(guān)系很多種,最
    發(fā)表于 03-04 14:13

    常見數(shù)據(jù)結(jié)構(gòu)

    `數(shù)據(jù)結(jié)構(gòu)在實(shí)際應(yīng)用中非常常見,現(xiàn)在各種算法基本都牽涉到數(shù)據(jù)結(jié)構(gòu),因此,掌握數(shù)據(jù)結(jié)構(gòu)算是軟件工程師的必備技能。一、什么是數(shù)據(jù)結(jié)構(gòu)
    發(fā)表于 05-10 07:58

    數(shù)據(jù)結(jié)構(gòu)教程,下載

    1. 數(shù)據(jù)結(jié)構(gòu)的基本概念 2. 算法與數(shù)據(jù)結(jié)構(gòu)3. C語言的數(shù)據(jù)類型及其算法描述要點(diǎn)4. 學(xué)習(xí)算法與數(shù)據(jù)結(jié)構(gòu)的意義與方法
    發(fā)表于 05-14 17:22 ?0次下載
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>教程,下載

    數(shù)據(jù)結(jié)構(gòu)教學(xué)軟件

    數(shù)據(jù)結(jié)構(gòu)教學(xué)軟件:C語言,pascal語言兩種。
    發(fā)表于 10-24 12:15 ?51次下載
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>教學(xué)軟件

    數(shù)據(jù)結(jié)構(gòu)與算法

    全國C語言考試公共基礎(chǔ)知識(shí)點(diǎn)——數(shù)據(jù)結(jié)構(gòu)與算法,該資料包含了有關(guān)數(shù)據(jù)結(jié)構(gòu)與算法的全部知識(shí)點(diǎn)。
    發(fā)表于 03-30 14:27 ?0次下載

    數(shù)據(jù)結(jié)構(gòu)是什么_數(shù)據(jù)結(jié)構(gòu)什么用

    數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高
    發(fā)表于 11-17 14:45 ?1.6w次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>是什么_<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b><b class='flag-5'>有</b>什么用

    數(shù)據(jù)結(jié)構(gòu)常見的八大排序算法

    本文總結(jié)了數(shù)據(jù)結(jié)構(gòu)常見的八大排序算法。詳細(xì)分析請(qǐng)看下文
    發(fā)表于 02-05 15:26 ?1822次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b><b class='flag-5'>常見</b>的八大排序算法

    什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用實(shí)例分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用實(shí)例分析包括了:數(shù)據(jù)結(jié)構(gòu)在串口通信當(dāng)中的應(yīng)用,數(shù)據(jù)結(jié)構(gòu)在按鍵
    發(fā)表于 09-26 15:45 ?14次下載
    什么是<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>?為什么要學(xué)習(xí)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>?<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>的應(yīng)用實(shí)例分析

    大牛分享平時(shí)如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法

    數(shù)據(jù)結(jié)構(gòu)與算法的地位對(duì)于一個(gè)程序員來說不言而喻。今天這篇文章不是來勸你們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的,也不是來和你們說數(shù)據(jù)結(jié)構(gòu)與算法多重要。
    的頭像 發(fā)表于 11-02 11:25 ?2950次閱讀

    數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)點(diǎn)哪些?

    數(shù)據(jù)結(jié)構(gòu)與算法的知識(shí)點(diǎn)哪些?
    的頭像 發(fā)表于 01-10 15:22 ?8152次閱讀

    數(shù)據(jù)結(jié)構(gòu)哪些知識(shí)重點(diǎn)

    不管你現(xiàn)在是不是需要用到數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),在工作的過程中理解、掌握好數(shù)據(jù)結(jié)構(gòu),對(duì)現(xiàn)在的工作和以后的發(fā)展都是幫助的。
    發(fā)表于 03-06 10:05 ?2331次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b><b class='flag-5'>有</b>哪些知識(shí)重點(diǎn)

    算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)分享(上)

    哪些常見數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實(shí)現(xiàn)的?各有什么優(yōu)缺點(diǎn)?本文簡(jiǎn)要分享算法基礎(chǔ)、常見
    的頭像 發(fā)表于 04-06 16:48 ?762次閱讀
    算法和<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>基礎(chǔ)知識(shí)分享(上)

    算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)分享(中)

    哪些常見數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實(shí)現(xiàn)的?各有什么優(yōu)缺點(diǎn)?本文簡(jiǎn)要分享算法基礎(chǔ)、常見
    的頭像 發(fā)表于 04-06 16:48 ?565次閱讀
    算法和<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>基礎(chǔ)知識(shí)分享(中)

    算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)分享(下)

    哪些常見數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實(shí)現(xiàn)的?各有什么優(yōu)缺點(diǎn)?本文簡(jiǎn)要分享算法基礎(chǔ)、常見
    的頭像 發(fā)表于 04-06 16:48 ?717次閱讀
    算法和<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>基礎(chǔ)知識(shí)分享(下)

    嵌入式技術(shù)數(shù)據(jù)結(jié)構(gòu)常見的樹哪些?

    數(shù)據(jù)庫中非常核心的一個(gè)部分,就是索引結(jié)構(gòu)的設(shè)計(jì)——這幾乎決定了數(shù)據(jù)庫的應(yīng)用領(lǐng)域。而索引結(jié)構(gòu)的設(shè)計(jì),又是數(shù)據(jù)結(jié)構(gòu)和算法的“重災(zāi)區(qū)”。下面我們就
    發(fā)表于 05-29 10:30 ?443次閱讀
    嵌入式技術(shù)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>中<b class='flag-5'>常見</b>的樹<b class='flag-5'>有</b>哪些?