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)的三大要素

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

物理結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)的結(jié)構(gòu)。

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

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

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

鏈?zhǔn)酱鎯?chǔ)通過存儲(chǔ)下一個(gè)元素的地址表示出元素間的線性結(jié)構(gòu)。

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

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

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

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

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

審核編輯 :李倩

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

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    智能化和智慧化是智慧園區(qū)不可或缺的兩大要素

    智能化和智慧化是智慧園區(qū)不可或缺的兩大要素。智能化指的是通過智能化設(shè)備、系統(tǒng)和技術(shù),實(shí)現(xiàn)對(duì)園區(qū)的全面感知、分析和處理,提高園區(qū)的運(yùn)營效率和舒適度。而智慧化則更注重人的智慧和知識(shí)的發(fā)揮,通過智能化
    的頭像 發(fā)表于 05-29 15:12 ?375次閱讀

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

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

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

    TASKING 編譯器是否可以將數(shù)據(jù)結(jié)構(gòu)設(shè)置為 \"打包\"? GCC 很早以前就提供了這種可能性,可以將__attribute__((packed))與對(duì)齊指令結(jié)合使用。 對(duì)于
    發(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)。它們在存儲(chǔ)和表示地理要素上有著不同的方法和特征。在接下來的文章中,我們將詳細(xì)介紹這兩種
    的頭像 發(fā)表于 02-25 15:06 ?2243次閱讀

    區(qū)塊鏈?zhǔn)鞘裁礃拥?b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)組織

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

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

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

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

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

    數(shù)據(jù)結(jié)構(gòu):判斷鏈表回文結(jié)構(gòu)

    給定一個(gè)鏈表,判斷該鏈表是否為回文結(jié)構(gòu)?;匚氖侵冈撟址蚰嫘蛲耆恢?。如當(dāng)輸入鏈表 {1,2,3,2,1} 時(shí),斷定是回文結(jié)構(gòu),輸出True。
    的頭像 發(fā)表于 12-01 13:26 ?585次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>:判斷鏈表回文<b class='flag-5'>結(jié)構(gòu)</b>

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

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

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

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

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

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

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

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

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

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

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

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