我們可以讀取這些資料,那麼這些資料在計算機中又是如何儲存和組織的呢,這就是我們要說的資料結構。
上面的思維導圖是按照資料結構的分類及處理畫的,其實二者並不是孤立的。在查詢和排序中,也可以看到線性、樹、圖的影子。也就是在資料結構的邏輯儲存結構中進行查詢和排序等的運算,它們都是緊密結合在一起的。
1)線性
乙個乙個的元素線性的排列,如下圖:
這種結構的儲存方式有兩種:順序儲存和鍊錶儲存。
順序儲存:
和上面的線性邏輯結構一樣,順序儲存中乙個個元素有序的排列著。
鍊錶儲存:
鍊錶儲存中有一條「鏈」將乙個個的元素連線起來,而每個元素的位置可以不鄰接。
2)樹
跟現實生活中的樹一樣,樹形結構有且有乙個根結點。樹的相關術語很多,但都很容易理解,比如:結點的度,樹的度,葉子,層次等等。
由於樹的結構十分複雜,我們通常研究的最多的是二叉樹。但要注意的是,二叉樹並不是樹的特殊形式。對比上下兩張,樹中的結點的最大度數沒有限制,但二叉樹結點的最大度數為2.在樹中,結點沒有左右之分;而二叉樹有區分。
樹的儲存結構類似於索引儲存結構。
3)圖與二叉樹相比,樹的結構要複雜一些,而圖就比樹更要複雜了。
圖中的任何兩個結點都可以相鄰接。
與圖類似的儲存結構是雜湊表,即雜湊。
了解了這三個簡單的邏輯結構,資料結構就算有了乙個初步的認識了,對於之後的演算法、查詢、排序等,就比較輕鬆了。
對於剛接觸資料結構的人來說,通常會有這麼乙個疑問,為什麼要學資料結構,它跟演算法又有什麼關係呢?
瑞士計算機科學家
niklaus wirth
於1976
年出版的一本書的書名叫做
「程式設計
= 演算法
+ 資料結構」,這句經典名言就體現了資料結構的重要性。資料結構,以及讓我們十分頭疼的演算法並不是一門教你程式設計的課,它們可以脫離任何的計算機程式語言,而只需要從抽象意義上去概括描述。
打乙個很形象的比喻:
程式設計就像蓋房子,資料結構是磚、瓦,而演算法則是設計圖紙。你若想蓋房子首先必須要有原材料(資料結構),但這些原材料並不能自動地蓋起你想要的房子,你必須按照設計圖紙(演算法)一磚一瓦地去砌,這樣你才能擁有你想要的房子。我們今天要說的資料結構正是程式設計這座大廈的基礎,只有打好了基礎,才有資格談設計、談構架。
軟考之資料結構
第一部分 資料結構 下面是我自己畫的一張圖,先來個巨集觀的掌握,先知道資料結構有什麼,然後在一一攻破。資料結構是軟考的難點,再加上我們即將到來的自考也會涉及到,要好好重視起來。這裡有乙個疑問,關於陣列是不是線性結構的問題,個人愚見,多維陣列屬於非線性結構。希望大家斧正。到後面我會用 號的多少來說明考...
軟考 1 資料結構
個人對於資料結構這些計算機底層的東西還是比較敬畏的 這些東西看起來很簡單 總覺得沒有什麼道理可講 所以理解應用起來比較困難 對於軟體設計人員來說 良好的計算機底層知識是成長的基石.什麼是資料結構 資料結構是指資料元素的集合及元素間的相互關係和構造方法 乙個資料結構 b可用乙個二元組表示 b a,r ...
軟考(3) 資料結構導論
資料結構不僅是軟考的內容,也是這次自考的內容,重要性不言而喻。前後看了很多遍,每次看都有不同的感受。看第一遍的時候被開篇的複雜度問題給了乙個下馬威,不過硬著頭皮看下去了,畫完一遍導圖以後,再看第二遍,已經覺得明晰多了。到現在把整本 資料結構導論 了然於胸,真的覺得學習就是乙個反覆的過程,反覆的強化,...