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

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

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

數(shù)據(jù)結(jié)構(gòu)的三大要素

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2022-04-24 16:25 ? 次閱讀

數(shù)據(jù)結(jié)構(gòu)主要關(guān)注邏輯結(jié)構(gòu)、數(shù)據(jù)的運算和物理結(jié)構(gòu)(存儲結(jié)構(gòu))。

926a8e78-c39f-11ec-bce3-dac502259ad0.jpg

01 邏輯結(jié)構(gòu)

集合結(jié)構(gòu)和數(shù)學中的集合概念類似,各個元素同屬一個集合。

92770950-c39f-11ec-bce3-dac502259ad0.jpg

線性結(jié)構(gòu)的元素像一條線。

928270ec-c39f-11ec-bce3-dac502259ad0.jpg

樹形結(jié)構(gòu)的元素就像一棵樹,常見的思維導圖、文件夾展開的目錄都是樹形結(jié)構(gòu)。

92945fb4-c39f-11ec-bce3-dac502259ad0.jpg

圖結(jié)構(gòu)像一張網(wǎng)。

92ae14fe-c39f-11ec-bce3-dac502259ad0.jpg

02 數(shù)據(jù)的運算

數(shù)據(jù)的運算其實就是大家熟悉的增刪改查,不過相比數(shù)據(jù)庫現(xiàn)成的SQL,數(shù)據(jù)結(jié)構(gòu)實現(xiàn)起來有很多細節(jié)需要考慮。

03 物理結(jié)構(gòu)

物理結(jié)構(gòu)是計算機存儲的結(jié)構(gòu)。

比如線性結(jié)構(gòu)在底層需要物理結(jié)構(gòu)來實現(xiàn)。

順序存儲把元素按順序存儲起來,這樣元素的線性結(jié)構(gòu)就體現(xiàn)出來了。

92b9e162-c39f-11ec-bce3-dac502259ad0.jpg

鏈式存儲通過存儲下一個元素的地址表示出元素間的線性結(jié)構(gòu)。

92c6e2b8-c39f-11ec-bce3-dac502259ad0.jpg

索引存儲用一張索引表來查出元素在內(nèi)存中的位置。

92de4eb2-c39f-11ec-bce3-dac502259ad0.jpg

散列存儲沒有索引表,而是根據(jù)元素的關(guān)鍵字直接計算出該元素的存儲地址,很厲害。

92eba9a4-c39f-11ec-bce3-dac502259ad0.jpg

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:編程通識:數(shù)據(jù)結(jié)構(gòu)的三大要素,你都有所了解嗎?

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式常用數(shù)據(jù)結(jié)構(gòu)有哪些

    在嵌入式編程中,數(shù)據(jù)結(jié)構(gòu)的選擇和使用對于程序的性能、內(nèi)存管理以及開發(fā)效率都具有重要影響。嵌入式系統(tǒng)由于資源受限(如處理器速度、內(nèi)存大小等),因此對數(shù)據(jù)結(jié)構(gòu)的選擇和使用尤為關(guān)鍵。以下是嵌入式編程中常用的幾種數(shù)據(jù)結(jié)構(gòu),結(jié)合具體特點和
    的頭像 發(fā)表于 09-02 15:25 ?324次閱讀

    探索編程世界的七大數(shù)據(jù)結(jié)構(gòu)

    結(jié)構(gòu)就像是一顆倒掛的小樹,有根、有枝、有葉。它是一種非線性的數(shù)據(jù)結(jié)構(gòu),以層級的方式存儲數(shù)據(jù),頂部是根節(jié)點,底部是葉節(jié)點。
    的頭像 發(fā)表于 04-16 12:04 ?326次閱讀

    TASKING編譯器是否可以將數(shù)據(jù)結(jié)構(gòu)設(shè)置為 \"打包\"?

    TASKING 編譯器是否可以將數(shù)據(jù)結(jié)構(gòu)設(shè)置為 \"打包\"? GCC 很早以前就提供了這種可能性,可以將__attribute__((packed))與對齊指令結(jié)合使用。 對于
    發(fā)表于 03-05 06:00

    矢量與柵格數(shù)據(jù)結(jié)構(gòu)各有什么特征

    矢量數(shù)據(jù)結(jié)構(gòu)和柵格數(shù)據(jù)結(jié)構(gòu)是地理信息系統(tǒng)(GIS)中最常用的兩種數(shù)據(jù)結(jié)構(gòu)。它們在存儲和表示地理要素上有著不同的方法和特征。在接下來的文章中,我們將詳細介紹這兩種
    的頭像 發(fā)表于 02-25 15:06 ?2099次閱讀

    區(qū)塊鏈是什么樣的數(shù)據(jù)結(jié)構(gòu)組織

    區(qū)塊鏈是一種特殊的數(shù)據(jù)結(jié)構(gòu),它以分布式、去中心化的方式組織和存儲數(shù)據(jù)。區(qū)塊鏈的核心原理是將數(shù)據(jù)分布在網(wǎng)絡(luò)的各個節(jié)點上,通過密碼學算法保證數(shù)據(jù)的安全和可靠性。在區(qū)塊鏈上,
    的頭像 發(fā)表于 01-11 10:57 ?1602次閱讀

    C語言數(shù)據(jù)結(jié)構(gòu)之跳表詳解

    大家好,今天分享一篇C語言數(shù)據(jù)結(jié)構(gòu)相關(guān)的文章--跳表。
    的頭像 發(fā)表于 12-29 09:32 ?771次閱讀
    C語言<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>之跳表詳解

    redis數(shù)據(jù)結(jié)構(gòu)的底層實現(xiàn)

    Redis是一種內(nèi)存鍵值數(shù)據(jù)庫,常用于緩存、消息隊列、實時數(shù)據(jù)分析等場景。它的高性能得益于其精心設(shè)計的數(shù)據(jù)結(jié)構(gòu)和底層實現(xiàn)。本文將詳細介紹Redis常用的數(shù)據(jù)結(jié)構(gòu)和它們的底層實現(xiàn)。 Re
    的頭像 發(fā)表于 12-05 10:14 ?558次閱讀

    不同數(shù)據(jù)結(jié)構(gòu)的定義代碼

    數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。
    的頭像 發(fā)表于 11-29 14:13 ?592次閱讀

    redis的數(shù)據(jù)結(jié)構(gòu)一般分為哪幾種?

    Redis的數(shù)據(jù)結(jié)構(gòu)一般可以分為以下幾種: 字符串(Strings): 字符串是 Redis 最基本的數(shù)據(jù)結(jié)構(gòu),可以存儲任何類型的數(shù)據(jù),包括二進制數(shù)據(jù)。字符串在 Redis 中有很多應(yīng)
    的頭像 發(fā)表于 11-16 11:19 ?395次閱讀

    redis的五種數(shù)據(jù)類型底層數(shù)據(jù)結(jié)構(gòu)

    Redis是一種內(nèi)存數(shù)據(jù)存儲系統(tǒng),支持多種數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)不僅可以滿足常見的存儲需求,還能夠通過其底層數(shù)據(jù)結(jié)構(gòu)提供高效的操作和查詢。以下是Redis中常用的五種
    的頭像 發(fā)表于 11-16 11:18 ?654次閱讀

    無鎖CAS如何實現(xiàn)各種無鎖的數(shù)據(jù)結(jié)構(gòu)

    ,可用于在多線程編程中實現(xiàn)不被打斷的數(shù)據(jù)交換操作,從而避免多線程同時改寫某?數(shù)據(jù)時由于執(zhí)行順序不確定性以及中斷的不可預(yù)知性產(chǎn)?的數(shù)據(jù)不一致問題 有了CAS,我們就可以用它來實現(xiàn)各種無鎖(lock free)的
    的頭像 發(fā)表于 11-13 15:38 ?702次閱讀
    無鎖CAS如何實現(xiàn)各種無鎖的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    定時器的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)選擇

    在后端的開發(fā)中,定時器有很廣泛的應(yīng)用。 比如: 心跳檢測 倒計時 游戲開發(fā)的技能冷卻 redis的鍵值的有效期等等,都會使用到定時器。 定時器的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)選擇 紅黑樹 對于增刪查,時間復(fù)雜度為O
    的頭像 發(fā)表于 11-13 14:22 ?467次閱讀
    定時器的實現(xiàn)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>選擇

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

    最近在研究srsLTE的代碼,其中就發(fā)現(xiàn)一個有意思的數(shù)據(jù)結(jié)構(gòu)------ringbuffer。 雖然,這是一個很基本的數(shù)據(jù)結(jié)構(gòu),但時,它在LTE這種通信協(xié)議棧系統(tǒng)中卻大行其道,也是很容易被協(xié)議
    的頭像 發(fā)表于 11-13 10:44 ?1466次閱讀
    ringbuffer<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>介紹

    epoll的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

    一、epoll的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) 在開始研究源代碼之前,我們先看一下 epoll 中使用的數(shù)據(jù)結(jié)構(gòu),分別是 eventpoll、epitem 和 eppoll_entry。 1、eventpoll 我們
    的頭像 發(fā)表于 11-10 10:20 ?725次閱讀
    epoll的基礎(chǔ)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    Linux內(nèi)核中使用的數(shù)據(jù)結(jié)構(gòu)

    Linux內(nèi)核代碼中廣泛使用了數(shù)據(jù)結(jié)構(gòu)和算法,其中最常用的兩個是鏈表和紅黑樹。 鏈表 Linux內(nèi)核代碼大量使用了鏈表這種數(shù)據(jù)結(jié)構(gòu)。鏈表是在解決數(shù)組不能動態(tài)擴展這個缺陷而產(chǎn)生的一種數(shù)據(jù)結(jié)構(gòu)。鏈表所
    的頭像 發(fā)表于 11-09 14:24 ?425次閱讀
    Linux內(nèi)核中使用的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>