国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

CS-第 5 週

Apr 03, 2025 pm 11:06 PM
c語(yǔ)言 鍵值對(duì) typedef

數(shù)據(jù)結(jié)構(gòu)詳解:從數(shù)組到樹(shù),再到哈希表

本文深入探討幾種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),包括數(shù)組、鍊錶、二叉搜索樹(shù)(BST)和哈希表,並闡述其在內(nèi)存中的組織方式及優(yōu)缺點(diǎn)。

信息結(jié)構(gòu)與抽像數(shù)據(jù)結(jié)構(gòu)

信息結(jié)構(gòu)指的是內(nèi)存中組織信息的方式,而抽像數(shù)據(jù)結(jié)構(gòu)則是我們概念上對(duì)這些結(jié)構(gòu)的理解。 理解抽像數(shù)據(jù)結(jié)構(gòu)有助於我們更好地在實(shí)踐中實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)。


堆棧和隊(duì)列

隊(duì)列是一種遵循FIFO(先進(jìn)先出)原則的抽像數(shù)據(jù)結(jié)構(gòu),類似於排隊(duì)等候。其主要操作包括入隊(duì)(添加元素到隊(duì)列尾部)和出隊(duì)(移除隊(duì)列頭部元素)。

堆棧則遵循LIFO(後進(jìn)先出)原則,如同疊盤(pán)子。其操作包括壓入(添加元素到堆棧頂部)和彈出(移除堆棧頂部元素)。


數(shù)組

數(shù)組是一種在內(nèi)存中連續(xù)存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)。 如下圖所示,數(shù)組在內(nèi)存中佔(zhàn)據(jù)連續(xù)的存儲(chǔ)空間。

CS-第 5 週

內(nèi)存中可能存在其他程序、函數(shù)和變量,以及之前使用過(guò)的冗餘數(shù)據(jù)。 如果需要向數(shù)組添加新元素,則需要重新分配內(nèi)存並複制整個(gè)數(shù)組,這會(huì)造成效率低下。

CS-第 5 週CS-第 5 週CS-第 5 週

預(yù)先分配過(guò)多的內(nèi)存雖然可以減少複製操作,但卻會(huì)浪費(fèi)系統(tǒng)資源。因此,根據(jù)實(shí)際需求分配內(nèi)存至關(guān)重要。


鍊錶

鍊錶是一種強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許將位於不同內(nèi)存區(qū)域的值連接成一個(gè)列表,並支持動(dòng)態(tài)擴(kuò)展或縮小。

CS-第 5 週

每個(gè)節(jié)點(diǎn)包含兩個(gè)值:數(shù)據(jù)值和指向下一個(gè)節(jié)點(diǎn)的指針。最後一個(gè)節(jié)點(diǎn)的指針值為NULL,表示鍊錶的結(jié)尾。

CS-第 5 週CS-第 5 週

C語(yǔ)言中,節(jié)點(diǎn)可以定義如下:

 <code class="c">typedef struct CS-第 5 週 { int number; struct CS-第 5 週 *next; } CS-第 5 週;</code>

以下示例展示了鍊錶的創(chuàng)建過(guò)程:

CS-第 5 週CS-第 5 週CS-第 5 週CS-第 5 週CS-第 5 週CS-第 5 週CS-第 5 週CS-第 5 週

鍊錶的缺點(diǎn)包括:需要額外內(nèi)存存儲(chǔ)指針,以及無(wú)法通過(guò)索引直接訪問(wèn)元素。


二叉搜索樹(shù)(BST)

二叉搜索樹(shù)是一種高效存儲(chǔ)、搜索和檢索數(shù)據(jù)的樹(shù)形結(jié)構(gòu)。

CS-第 5 週CS-第 5 週CS-第 5 週

BST 的優(yōu)點(diǎn)在於動(dòng)態(tài)性和搜索效率(O(log n)),缺點(diǎn)在於樹(shù)不平衡時(shí)搜索效率會(huì)下降到O(n),並且需要額外的內(nèi)存存儲(chǔ)指針。


哈希表

哈希表類似於字典,包含鍵值對(duì)。 它利用哈希函數(shù)將鍵映射到數(shù)組索引,從而實(shí)現(xiàn)O(1) 的平均查找時(shí)間。

CS-第 5 週

哈希衝突(多個(gè)鍵映射到同一個(gè)索引)可以通過(guò)鍊錶或其他方法解決。 哈希函數(shù)的設(shè)計(jì)對(duì)哈希表的性能至關(guān)重要。 一個(gè)簡(jiǎn)單的哈希函數(shù)示例如下:

 <code class="c">#include <ctype.h> unsigned int hash(const char *word) { return toupper(word[0]) - 'A'; }</ctype.h></code>

本文基於cs50x 2024源碼整理。

以上是CS-第 5 週的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

debian readdir如何與其他工具集成 debian readdir如何與其他工具集成 Apr 13, 2025 am 09:42 AM

Debian系統(tǒng)中的readdir函數(shù)是用於讀取目錄內(nèi)容的系統(tǒng)調(diào)用,常用於C語(yǔ)言編程。本文將介紹如何將readdir與其他工具集成,以增強(qiáng)其功能。方法一:C語(yǔ)言程序與管道結(jié)合首先,編寫(xiě)一個(gè)C程序調(diào)用readdir函數(shù)並輸出結(jié)果:#include#include#includeintmain(intargc,char*argv[]){DIR*dir;structdirent*entry;if(argc!=2){

redis計(jì)數(shù)器怎麼實(shí)現(xiàn) redis計(jì)數(shù)器怎麼實(shí)現(xiàn) Apr 10, 2025 pm 10:21 PM

Redis計(jì)數(shù)器是一種使用Redis鍵值對(duì)存儲(chǔ)來(lái)實(shí)現(xiàn)計(jì)數(shù)操作的機(jī)制,包含以下步驟:創(chuàng)建計(jì)數(shù)器鍵、增加計(jì)數(shù)、減少計(jì)數(shù)、重置計(jì)數(shù)和獲取計(jì)數(shù)。 Redis計(jì)數(shù)器的優(yōu)勢(shì)包括速度快、高並發(fā)、持久性和簡(jiǎn)單易用。它可用於用戶訪問(wèn)計(jì)數(shù)、實(shí)時(shí)指標(biāo)跟蹤、遊戲分?jǐn)?shù)和排名以及訂單處理計(jì)數(shù)等場(chǎng)景。

如何理解C  中的ABI兼容性? 如何理解C 中的ABI兼容性? Apr 28, 2025 pm 10:12 PM

C 中的ABI兼容性是指不同編譯器或版本生成的二進(jìn)制代碼能否在不重新編譯的情況下兼容。 1.函數(shù)調(diào)用約定,2.名稱修飾,3.虛函數(shù)表佈局,4.結(jié)構(gòu)體和類的佈局是主要涉及的方面。

redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步驟:打開(kāi) Redis 客戶端。輸入指令(動(dòng)詞 鍵 值)。提供所需參數(shù)(因指令而異)。按 Enter 執(zhí)行指令。 Redis 返迴響應(yīng),指示操作結(jié)果(通常為 OK 或 -ERR)。

redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

使用Redis進(jìn)行鎖操作需要通過(guò)SETNX命令獲取鎖,然後使用EXPIRE命令設(shè)置過(guò)期時(shí)間。具體步驟為:(1) 使用SETNX命令嘗試設(shè)置一個(gè)鍵值對(duì);(2) 使用EXPIRE命令為鎖設(shè)置過(guò)期時(shí)間;(3) 當(dāng)不再需要鎖時(shí),使用DEL命令刪除該鎖。

notepad  怎麼格式化json notepad 怎麼格式化json Apr 16, 2025 pm 07:48 PM

使用 Notepad 中 JSON Viewer 插件可輕鬆格式化 JSON 文件:打開(kāi) JSON 文件。安裝並啟用 JSON Viewer 插件。轉(zhuǎn)到“插件”&gt;“JSON Viewer”&gt;“格式化 JSON”。自定義縮進(jìn)、分行和排序設(shè)置。應(yīng)用格式化以提高可讀性和理解力,從而簡(jiǎn)化 JSON 數(shù)據(jù)的處理和編輯。

HadiDB:Python 中的輕量級(jí)、可水平擴(kuò)展的數(shù)據(jù)庫(kù) HadiDB:Python 中的輕量級(jí)、可水平擴(kuò)展的數(shù)據(jù)庫(kù) Apr 08, 2025 pm 06:12 PM

HadiDB:輕量級(jí)、高水平可擴(kuò)展的Python數(shù)據(jù)庫(kù)HadiDB(hadidb)是一個(gè)用Python編寫(xiě)的輕量級(jí)數(shù)據(jù)庫(kù),具備高度水平的可擴(kuò)展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創(chuàng)建用戶:createuser()方法創(chuàng)建一個(gè)新用戶。 authentication()方法驗(yàn)證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

Redis內(nèi)存碎片如何處理? Redis內(nèi)存碎片如何處理? Apr 10, 2025 pm 02:24 PM

Redis內(nèi)存碎片是指分配的內(nèi)存中存在無(wú)法再分配的小塊空閒區(qū)域。應(yīng)對(duì)策略包括:重啟Redis:徹底清空內(nèi)存,但會(huì)中斷服務(wù)。優(yōu)化數(shù)據(jù)結(jié)構(gòu):使用更適合Redis的結(jié)構(gòu),減少內(nèi)存分配和釋放次數(shù)。調(diào)整配置參數(shù):使用策略淘汰最近最少使用的鍵值對(duì)。使用持久化機(jī)制:定期備份數(shù)據(jù),重啟Redis清理碎片。監(jiān)控內(nèi)存使用情況:及時(shí)發(fā)現(xiàn)問(wèn)題並採(cǎi)取措施。

See all articles