一是如何在計算機中方便、高效地表示和組織數據;
二是如何在計算機存儲器(內存和外存)中存儲數據;
三是如何對存儲在計算機中的數據進行操做,能夠有哪些操做,如何實現這些操做以及如何對同一問題的不一樣操做方法進行評價;
四是必須理解每種數據結構的性能特徵,以便選擇一個適合於某個特定問題的數據結構。
數據(Data)
能夠是數值數據,如整數、實數或複數;
能夠是非數值數據,如字符、文字、圖形、圖像、聲音等。
數據元素(Data Element)
數據元素是數據的基本單位,在計算機程序中一般被做爲一個總體進行考慮和處理。數據元素有時也被稱爲元素、結點、頂點、記錄等。
數據項(Data Item)
一個數據元素可由若干個數據項組成。數據項是不可分割的、含有獨立意義的最小數據單位,數據項有時也稱爲字段(Field)或域(Domain)。
數據項分爲兩種,一種叫作初等項,如學生的性別、籍貫等,在處理時不能再進行分割;另外一種叫作組合項,如學生的成績,它能夠再分爲數學、物理、化學等更小的項。
數據對象(Data Object)
數據對象是性質相同的數據元素的集合, 是數據的一個子集。例如,整數數據對象是{0,±1,±2,±3,…},字符數據對象是{a,b,c,…}。
數據類型(Data Type)
數據類型可分爲兩類:一類是非結構的原子類型,如C#語言中的基本類型(整型、實型、字符型等);另外一類是結構類型,它的成分能夠由多個結構類型組成,並能夠分解。結構類型的成分能夠是非結構的,也能夠是結構的。例如,C#語言中數組的成分能夠是整型等基本類型,也能夠是數組等結構類型。
數據結構(Data Structure)
數據結構是相互之間存在一種或多種特定關係的數據元素的集合。在任何問題中,數據元素之間都不是孤立的,而是存在着必定的關係,這種關係稱爲結構(Structure)。根據數據元素之間關係的不一樣特性,一般有 4 類基本數據結構:
(1) 集合(Set):
該結構中的數據元素存在着「同屬於一個集合」的關係
(2) 線性結構(Linear Structure):
該結構中的數據元素存在着「一對一」的關係。
(3) 樹形結構(Tree Structure):
該結構中的數據元素存在着「一對多」的關係。
(4) 圖狀結構(Graphic Structure):
該結構中的數據元素存在着「多對多」的關係。
數組
數據結構(Data Structure)簡記爲 DS,是一個二元組,
DS = (D,R)
D 是數據元素的有限集合,
R 是數據元素之間關係的有限集合。
註釋:
(D,R)表示一個數學上數組.表示D*R個數組元素.數據結構
從數據類型和數據結構的概念可知,兩者的關係很是密切。數據類型能夠看做是簡單的數據結構。數據的取值範圍能夠看做是數據元素的有限集合,而對數據進行操做的集合能夠看做是數據元素之間關係的集合。性能
數據結構包括數據的邏輯結構和物理結構。上述數據結構的定義就是數據的邏輯結構(Logic Structure),數據的邏輯結構是從具體問題抽象出來的數學模型,與數據在計算機中的具體存儲沒有關係。然而,咱們討論數據結構的目的是爲了在計算機中實現對它的操做,所以還須要研究在計算機中如何表示和存儲數據結構,即數據的物理結構(Physical Structure)。數據的物理結構又稱爲存儲結構(Storage Structure),是數據在計算機中的表示(又叫映像)和存儲,包括數據元素的表示和存儲以及數據元素之間關係的表示和存儲。spa
數據的存儲結構包括順序存儲結構和鏈式存儲結構兩種。
順序存儲結構(Sequence Storage Structure)是經過數據元素在計算機存儲器中的相對位置來表示出數據元素的邏輯關係,通常把邏輯上相鄰的數據元素存儲在物理位置相鄰的存儲單元中。在 C#語言中用數組來實現順序存儲結構。由於數組所分配的存儲空間是連續的,因此數組天生就具備實現數據順序存儲結構的能力。
鏈式存儲結構(Linked Storage Structure)對邏輯上相鄰的數據元素不要求其存儲位置必須相鄰。鏈式存儲結構中的數據元素稱爲結點(Node),在結點中附設地址域(Address Domain)來存儲與該結點相鄰的結點的地址來實現結點間的邏輯關係。這個地址稱爲引用(Reference),這個地址域稱爲引用域(Reference Domain)。對象