八種數(shù)據(jù)結(jié)構(gòu)特點(diǎn)

數(shù)據(jù)結(jié)構(gòu):計(jì)算機(jī)存儲(chǔ)偶翅、組織數(shù)據(jù)的方式。程序員的目標(biāo)是為當(dāng)前的問題選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)碉渡。

八種數(shù)據(jù)結(jié)構(gòu):數(shù)組聚谁,棧,鏈表滞诺,隊(duì)列形导,堆,圖习霹,樹朵耕,散列表,每種數(shù)據(jù)結(jié)構(gòu)都有其特殊的存儲(chǔ)方式淋叶。


一阎曹、數(shù)組

概念:

一維數(shù)組:數(shù)組元素+數(shù)組索引

多維數(shù)組:數(shù)組的元素也是數(shù)組

基本操作:insert,get,delete(刪除某個(gè)索引處的數(shù)組),size(獲取數(shù)組長(zhǎng)度)

題目:

查找數(shù)組第二小的元素

查找第一個(gè)沒有重復(fù)的數(shù)組元素

合并2個(gè)排序號(hào)的數(shù)據(jù)

重新排列數(shù)組中的正數(shù)和負(fù)數(shù)

二、棧

特點(diǎn):棧是一種特殊的線性表,僅能在線性表的一端操作处嫌,棧頂允許操作栅贴,棧底不允許操作。 棧的特點(diǎn)是:先進(jìn)后出熏迹,或者說是后進(jìn)先出檐薯。棧中的元素采用LIFO (Last In First Out),即后進(jìn)先出注暗。

基本操作:Push(棧頂插入元素)坛缕,Pop(返回棧最上方的元素,并刪除)友存,isEmpty(查詢棧是否為空)祷膳,Top(返回最上方元素陶衅,并不刪除)

題目:使用棧計(jì)算后綴表達(dá)式屡立、使用棧為棧中的元素排序、檢查字符串中的括號(hào)是否匹配正確

使用場(chǎng)景:棧常應(yīng)用于實(shí)現(xiàn)遞歸功能方面的場(chǎng)景搀军,例如斐波那契數(shù)列膨俐。撤回,即Ctrl+Z罩句,是我們最常見的操作之一焚刺,大多數(shù)應(yīng)用都會(huì)支持這個(gè)功能。你知道它是怎么實(shí)現(xiàn)的嗎门烂?答案是這樣的:把之前的應(yīng)用狀態(tài)(限制個(gè)數(shù))保存到內(nèi)存中乳愉,最近的狀態(tài)放到第一個(gè)。這時(shí)屯远,我們需要棧(stack)來實(shí)現(xiàn)這個(gè)功能蔓姚。

三、隊(duì)列

概念:隊(duì)列(Queue)與棧類似慨丐,都是采用線性結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)坡脐。它們的區(qū)別在于,棧采用LIFO方式房揭,而隊(duì)列采用先進(jìn)先出备闲,即FIFO(First in First Out)。

使用場(chǎng)景:因?yàn)殛?duì)列先進(jìn)先出的特點(diǎn)捅暴,在多線程阻塞隊(duì)列管理中非常適用恬砂。

基本操作:Enqueue—在隊(duì)列末尾插入元素,Dequeue—將隊(duì)列第一個(gè)元素刪除i蓬痒,sEmpty—查詢隊(duì)列是否為空泻骤,Top—返回隊(duì)列的第一個(gè)元素

習(xí)題:使用隊(duì)列實(shí)現(xiàn)棧,倒轉(zhuǎn)隊(duì)列的前K個(gè)元素,使用隊(duì)列將1到n轉(zhuǎn)換為二進(jìn)制瞪讼。

四钧椰、鏈表

概念“鏈表(Linked List)也是線性結(jié)構(gòu),它與數(shù)組看起來非常像符欠,但是它們的內(nèi)存分配方式嫡霞、內(nèi)部結(jié)構(gòu)和插入刪除操作方式都不一樣。鏈表是一系列節(jié)點(diǎn)組成的鏈希柿,每一個(gè)節(jié)點(diǎn)保存了數(shù)據(jù)以及指向下一個(gè)節(jié)點(diǎn)的指針诊沪。鏈表頭指針指向第一個(gè)節(jié)點(diǎn),如果鏈表為空曾撤,則頭指針為空或者為null端姚。鏈表分為:?jiǎn)蜗蜴湵恚p向鏈表挤悉。

使用場(chǎng)景:鏈表可以用來實(shí)現(xiàn)文件系統(tǒng)渐裸、哈希表和鄰接表。

基本操作:InsertAtEnd—在鏈表結(jié)尾插入元素装悲,InsertAtHead—在鏈表開頭插入元素昏鹃,Delete—?jiǎng)h除鏈表的指定元素,DeleteAtHead—?jiǎng)h除鏈表第一個(gè)元素诀诊,Search—在鏈表中查詢指定元素洞渤,isEmpty—查詢鏈表是否為空

題目:倒轉(zhuǎn)1個(gè)鏈表,檢查鏈表中是否存在循環(huán)属瓣,返回鏈表倒數(shù)第N個(gè)元素载迄,移除鏈表中的重復(fù)元素

五、圖

概念:圖(graph)由多個(gè)節(jié)點(diǎn)(vertex)構(gòu)成抡蛙,節(jié)點(diǎn)之間闊以互相連接組成一個(gè)網(wǎng)絡(luò)护昧。(x, y)表示一條邊(edge),它表示節(jié)點(diǎn)x與y相連溜畅。邊可能會(huì)有權(quán)值(weight/cost)捏卓。

分類:無向圖,有向圖

表現(xiàn)形式:鄰接矩陣(Adjacency Matrix)慈格,鄰接表(Adjacency List)

遍歷圖的兩種算法:廣度優(yōu)先搜索(Breadth First Search)怠晴,深度優(yōu)先搜索(Depth First Search)

常見題目:

實(shí)現(xiàn)廣度優(yōu)先搜索,實(shí)現(xiàn)深度優(yōu)先搜索浴捆,檢查圖是否為樹蒜田,統(tǒng)計(jì)圖中邊的個(gè)數(shù),使用Dijkstra算法查找兩個(gè)節(jié)點(diǎn)之間的最短距離选泻。

六冲粤、樹

樹(Tree)是一個(gè)分層的數(shù)據(jù)結(jié)構(gòu)美莫,由節(jié)點(diǎn)和連接節(jié)點(diǎn)的邊組成。樹是一種特殊的圖梯捕,它與圖最大的區(qū)別是沒有循環(huán)厢呵。樹被廣泛應(yīng)用在人工智能和一些復(fù)雜算法中,用來提供高效的存儲(chǔ)結(jié)構(gòu)傀顾。

常見樹:N叉樹(N-ary Tree)襟铭,平衡樹(Balanced Tree),二叉樹(Binary Tree)短曾,二叉查找樹(Binary Search Tree)寒砖,平衡二叉樹(AVL Tree),紅黑樹(Red Black Tree)嫉拐,2-3樹(2–3 Tree)

題目:計(jì)算樹的高度哩都,查找二叉平衡樹中第K大的元素,查找樹中與根節(jié)點(diǎn)距離為k的節(jié)點(diǎn)婉徘,查找二叉樹中某個(gè)節(jié)點(diǎn)所有祖先節(jié)點(diǎn)漠嵌。

七. 哈希表

哈希(Hash)將某個(gè)對(duì)象變換為唯一標(biāo)識(shí)符,該標(biāo)識(shí)符通常用一個(gè)短的隨機(jī)字母和數(shù)字組成的字符串來代表判哥。哈舷籽牛可以用來實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)碉考,其中最常用的就是哈希表(hash table)塌计。

哈希表通常由數(shù)組實(shí)現(xiàn)。

哈希表的性能取決于3個(gè)指標(biāo):

哈希函數(shù)哈希表的大小哈希沖突處理方式

題目:查找數(shù)組中對(duì)稱的組合侯谁,確認(rèn)某個(gè)數(shù)組的元素是否為另一個(gè)數(shù)組元素的子集锌仅,確認(rèn)給定的數(shù)組是否互斥。

八墙贱、前綴樹

前綴樹(Prefix Trees或者Trie)與樹類似热芹,用于處理字符串相關(guān)的問題時(shí)非常高效。它可以實(shí)現(xiàn)快速檢索惨撇,常用于字典中的單詞查詢伊脓,搜索引擎的自動(dòng)補(bǔ)全甚至IP路由。

參考資料:http://www.cnblogs.com/williamjie/p/9558015.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魁衙,一起剝皮案震驚了整個(gè)濱河市报腔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剖淀,老刑警劉巖纯蛾,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纵隔,居然都是意外死亡翻诉,警方通過查閱死者的電腦和手機(jī)炮姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碰煌,“玉大人舒岸,你說我怎么就攤上這事÷” “怎么了吁津?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)堕扶。 經(jīng)常有香客問我碍脏,道長(zhǎng),這世上最難降的妖魔是什么稍算? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任典尾,我火速辦了婚禮,結(jié)果婚禮上糊探,老公的妹妹穿的比我還像新娘钾埂。我一直安慰自己,他們只是感情好科平,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布褥紫。 她就那樣靜靜地躺著,像睡著了一般瞪慧。 火紅的嫁衣襯著肌膚如雪髓考。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天弃酌,我揣著相機(jī)與錄音氨菇,去河邊找鬼。 笑死妓湘,一個(gè)胖子當(dāng)著我的面吹牛查蓉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播榜贴,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼豌研,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了唬党?” 一聲冷哼從身側(cè)響起鹃共,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎初嘹,沒想到半個(gè)月后及汉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屯烦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年坷随,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了房铭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡温眉,死狀恐怖缸匪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情类溢,我是刑警寧澤凌蔬,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站闯冷,受9級(jí)特大地震影響砂心,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛇耀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一辩诞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺涤,春花似錦译暂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拧咳,卻和暖如春伯顶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呛踊。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國打工砾淌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谭网。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赃春,于是被迫代替她去往敵國和親愉择。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容