資料結構有什麼用?是什麼?

時間 2021-05-05 16:32:47

1樓:Harrytsz

資料結構有什麼用,這是個好問題,而且這個問題最好始終伴隨著演算法與資料結構學習的整個過程。計算機是一門極具實用主義的學科,他造出來的每乙個概念都有其實際意義的。

如果你深入了解過作業系統或者資料庫系統你就會發現資料結構無處不在,作業系統為了便於協調管理程序,設計了PCB資料結構,優先佇列;程序同步過程中拓撲結構等;函式呼叫過程中的棧結構;MySQL資料庫系統中的B+樹,Redis資料庫中的跳表;計算機網路中的各種資料報結構;就連物件導向的高階程式語言各種特性的底層實現機制也是利用了各種資料結構。總之,計算機領域中如果你無法利用合理的資料結構組織資料,你就無法高效的利用這些資料。

計科中的大量演算法都依託於相應的資料結構,所以在學習資料結構之前問一問這種資料結構有什麼用,他可以和哪些演算法搭配使用?這確實是個不錯的問題。一開始學習資料結構與演算法的時候,滿天飛舞的演算法以及令人眼花繚亂的資料結構會無情的把你摁在地上摩擦,當你磨出老繭了也就頓悟了。

太極生兩儀,兩儀生四象,四象生八卦。這種思維方式非常適合用來學習資料結構與演算法,記憶體就好比是太極,那兩儀就是陣列和鍊錶,記憶體總是以陣列或鍊錶的形式被組織利用。由陣列和鍊錶進一步可以實現樹結構,圖結構等更加複雜的高維資料結構。

對於一些緊湊型的結構可以用陣列來實現,比如堆等完全二叉樹等就可以使用陣列來實現。對於一些相對鬆散的結構就可以用鍊錶來實現,例如B樹,紅黑樹,各種圖。在不嚴謹的前提下,可以簡單粗暴的理解為靜態場景用陣列,動態場景用鍊錶。

雖然各種資料結構紛繁複雜,但是其基本操作無非是:增刪改查。其中「查」是最終目的,就像上面說的,無法組織資料也就無法利用資料。

要想管理乙個混亂的體系,首先就要使其朝向「熵減」的方向發展,也就是說使其變得有序。這也就是為毛大部分介紹演算法與資料結構的書上來就是各種排序演算法,這一招對於刷演算法題也同樣奏效,當你陷入絕境而一籌莫展的時候,不妨想想能不能先排個序,一旦有序了很多難題就會變得可以被掌控了。

針對有序的場景,一般都有對應成熟且穩定的解決方案。

回到最開始的問題,資料結構有什麼作用?我認為的其最大作用就是把混亂的資料組織起來,最終讓其變得有序。至於怎麼利用有序資料,那就是具體的業務場景問題了。

2樓:

我的知乎文章專欄《中級程式設計師教程》開篇就是一系列資料結構。

既然你說有現成的,那我們就先說一說使用現成的庫為何還需要學資料結構?

首先,資料結構的目標不是教你寫單鏈表。單鏈表只是乙個載體,什麼的載體?抽象實際問題為計算機語句並分析效率(時空複雜性)的載體。

也就是說這門課的目標是教會你怎麼分析問題,並在交會你一些招數(資料結構)的過程中讓你掌握這種能力。

其次,有現成的我去用不就行了嗎?那你也要知道什麼時候用哪個好。要有判斷力。

第三,工作中,問題都比書上覆雜多變,各種場景都沒有現成的資料結構可以用。需要自己挑選基礎容器組裝成複雜的資料結構。也就是物件導向的類設計。

就算你是面向過程的,一樣也是對複雜資料結構struct的設計。

最後總結一下就是:資料結構教給你舉一反三的設計能力。解決複雜問題的能力。而絕對不是教你怎麼實現單鏈表。

3樓:Sprite

比方說四叉樹可以用於碰撞檢測,雙向鍊錶可以用於文字遊戲的上下文檢索和分支選擇,安卓系統的頁面是採用了棧,先開啟的頁面後關閉等等。。

4樓:Aetherus

其實我覺得學資料結構關鍵是學它們的設計思路和要解決的效能問題。

如果你不想自己手撕資料結構,只想用封裝好的,那也沒問題。事實上真正工作中用的還是那些封裝好了的,關鍵要知道什麼時候用什麼資料結構,每種資料結構在增刪改查時有什麼效能特性,有什麼優缺點。說實話,手撕一遍的印象跟單單把教材啃一遍的印象的深度差別非常大。

另外,雖然很多語言裡都整合了現成的資料結構,但是一旦要跳出這門語言(比如設計微服務集群等),資料結構和演算法的知識和思路仍然可以用,只不過用在更大的規模上而已。但那時可能已經沒有現成的東西給你用了,尤其是多語言混合使用的場合更是如此。

學習資料結構有什麼用?

秋葉 換種說法吧,你初中學過的勾股定律,二次函式,概率 高中學的集合,指數對數,立體幾何,統計,各種不等式在95 以上的人在以後的工作生活中,都用不到.但是這社會的發展,大部分就是靠的那5 的人,所以才會被寫入教材資料結構和演算法也是一樣,95 的程式設計師也是用不到的,但是有的人是想當那5 的 如...

資料結構到底有什麼用

就是很多經典問題,你自己做呢,也不是做不出來,就是程式冗雜效率低。資料結構和演算法呢,就是告訴你優秀畢業生的高分作業的套路,你呢,搞清楚ta們的套路,下次遇到的時候借鑑,站在巨人的肩膀上 寒鴿兒 程式 資料結構 演算法,廣義上的資料結構是資料在計算機中的物理儲存和資料之間的邏輯結構。據此定義,陣列也...

學習資料結構有什麼好的教程?

資料結構和數學很類似都是比較抽象的,而往往實際問題都是非常複雜的,所以要先掌握最基本最抽象最特殊的規律。學習資料結構首先要掌握一門計算機語言,起碼要知道語法,能利用它完成一些基本程式,就像首先要掌握數學最基本的加減乘除,定理之類的規則。其次要知道資料結構和演算法是分不開的,學習資料結構的同時也需要一...