何謂資料結構?,資料結構?
何謂資料結構?
資料結構是電腦儲存、組織資料的方式,資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。這是百度解釋的資料結構定義。暫且不說理解起來有沒有難度,就說資料結構到底是什麼東西?恐怕至今還沒有一個權威的解釋,資料結構的內容也是一直在擴充。學了一段時間了,也不知道資料結構到底是什嗎?有一個解釋我還是蠻理解的:資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映一個資料的內部構成,即一個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結構反映成分資料在電腦內部的儲存安排。資料結構是資料存在的形式。 資料結構是資訊的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對資料結構中的資料進行某種操作。
資料結構形成和發展的背景
一般來說,用電腦解決一個具體的問題時,大致需要經過以下幾個步驟:首先要從具體問題抽象出一個活當的數學模型,然後設計一個解決數學模型的演算法,最後編寫出程式碼,進行調試,調整直至得到最終的解答。尋找數學模型的實質就是分析問題,從中提取操作的對象,並找出這些操作對象之間含有的關係,然後用數學的語言加以描述。為了編寫一個好的程式,必須分析待處理的對象的特性以及各種對象之間存在的關係,這就是資料結構這門學科的作用。
簡單的來說,資料結構是一門研究非數值計算的程式設計問題中電腦的操作對象以及它們之間的關係和操作等的學科。因此,主要有三個方面的內容:資料的邏輯結構;資料的實體儲存體結構;對資料的操作(或演算法)。
資料結構研究的對象
資料:是對客觀事物的符號表示,在電腦科學中是指所有能輸入到電腦中並被電腦程式處理的符號的總稱。
資料元素:是資料的基本單位,在電腦程式中通常作為一個整體進行考慮和處理,有時,一個資料元素可有若干個資料項目組成。資料項目是資料的不可分割的最小單位。
資料對象:是性質相同的資料元素的集合,是資料的一個子集。
資料的邏輯結構:是相互之間存在一種或多種特定關係的資料元素的集合。
邏輯結構包括四種基本的結構:
1.集合:資料結構中的元素之間除了“同屬一個集合” 的相互關係外,別無其他關係;
2.線性結構:資料結構中的元素存在一對一的相互關係; 3.樹形結構:資料結構中的元素存在一對多的相互關係; 4.圖形結構:資料結構中的元素存在多對多的相互關係。 資料結構的形式定義: 資料結構是一個二元組,Date Structure(D,S),其中D是資料元素的有限集,S是D上關係的有限集。 資料的儲存結構:指資料的邏輯結構在電腦儲存空間的存放形式。也稱資料的物理結構。 資料的儲存結構是資料結構在電腦中的表示(又稱映像),它包括資料元素的機內表示和關係的機內表示。由於具體實現的方法有順序、連結、索引、散列等多種,所以,一種資料結構可表示成一種或多種儲存結構。 資料元素的機內表示(映像方法): 用二進位位(bit)的位串表示資料元素。通常稱這種位串為節(node)。當資料元素有若干個資料項目組成時,位串中與個資料項目對應的子位串稱為資料域(data field)。因此,節點是資料元素的機內表示(或機內映像)。 關係的機內表示(映像方法):資料元素之間的關係的機內表示可以分為順序映像和非順序映像,常用兩種儲存結構:順序儲存結構和鏈式儲存結構。順序映像藉助元素在儲存空間中的相對位置來表示資料元素之間的邏輯關係。非順序映像藉助指示元素儲存位置的指標(pointer)來表示資料元素之間的邏輯關係。 通常,演算法的設計取決於資料的邏輯結構,演算法的實現取決於資料的實體儲存體結構。 這算是初入資料結構的概述吧,抽象的很,理解起來很麻煩,硬著頭皮看了三遍才感覺有點眉目,但是腦子裡依然很亂,相信學習了具體的演算法就應該算是有一個更高層次的理解。