資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結構反映成分資料在計算機內部的儲存安排。資料結構是資料存在的形式。
資料結構是資訊的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對資料結構中的資料進行某種操作。
資料結構主要研究什麼?
資料結構作為一門學科主要研究資料的各種邏輯結構和儲存結構,以及對資料的各種操作。因此,主要有三個方面的內容:資料的邏輯結構;資料的物理儲存結構;對資料的操作(或演算法)。通常,演算法的設計取決於資料的邏輯結構,演算法的實現取決於資料的物理儲存結構。
什麼是資料結構?什麼是邏輯結構和物理結構?
資料是指由有限的符號(比如,
"0"和
"1",具有其自己的結構、操作、和相應的語義)組成的元素的集合。結構是元素之間的關係的集合。通常來說,乙個資料結構ds
可以表示為乙個二元組:
ds=(d,s)
, //i.e., data-structure=(data-part,logic-structure-part)這裡d
是資料元素的集合(或者是「結點
」,可能還含有
「資料項」或
「資料域」),
s是定義在
d(或其他集合)上的關係的集合,
s =
,稱之為元素的邏輯結構。
邏輯結構有四種基本型別:集合結構、線性結構、樹狀結構和網路結構。表和
樹是最常用的兩種高效資料結構,許多高效的演算法可以用這兩種資料結構來設計實現。
表是線性結構的(全序關係),樹(
偏序或層次關係)和
圖(區域性有序
(weak/local orders)
)是非線性結構。
資料結構的物理結構是指邏輯結構的儲存映象
(image)
。資料結構
ds的物理結構
p對應於從
ds 的資料元素到儲存區
m(維護著邏輯結構
s)的乙個對映: p
:(d,s)-->m
儲存器模型:乙個儲存器
m是一系列固定大小的儲存單元,每個單元
u有乙個唯一的位址
a(u)
,該位址被連續地編碼。每個單元
u 有乙個唯一的後繼單元
u'=succ(u)。
p
的四種基本對映模型:順序(
sequential
)、鏈結(
linked
)、索引(
indexed
)和雜湊(
hashing
)對映。
因此,我們至少可以得到
4×4種可能的物理資料結構:
sequential
(sets)
linked
lists
indexed
trees
hash
graphs
(並不是所有的可能組合都合理)
資料結構ds
上的操作:所有的定義在
ds上的操作在改變資料元素(節點)或節點的域時必須保持
ds的邏輯和物理結構。
ds上的基本操作:任何其他對
ds的高階操作都可以用這些基本操作來實現。最好將
ds和他的所有基本操作看作乙個整體
——稱之為模組。我們可以進一步將該模組抽象為資料型別(其中
ds的儲存結構被表示為私有成員,基本操作被表示為公共方法),稱之為adt。作為
adt,堆疊和佇列都是一種特殊的表,他們擁有表的操作的子集。 對於
dats
的高階操作可以被設計為(不封裝的)演算法,利用基本操作對
ds進行處理。
好的和壞的ds:如果乙個
ds可以通過某種
「線性規則
」被轉化為線性的
ds(例如線性表),則稱它為好的
ds。好的
ds通常對應於好的(高效的)演算法。這是由計算機的計算能力決定的,因為計算機本質上只能訪問邏輯連續的記憶體單元,因此如何沒有線性化的結構邏輯上是不可計算的。比如對乙個圖進行操作,要訪問圖的所有結點,則必須按照某種順序來依次訪問所有節點(要形成乙個偏序),必須通過某種方式將圖固有的非線性結構轉化為線性結構才能對圖進行操作。 樹
是好的ds——
它有非常簡單而高效的線性化規則,因此可以利用樹設計出許多非常高效的演算法。樹的實現和使用都很簡單,但可以解決大量特殊的複雜問題,因此樹是實際程式設計中最重要和最有用的一種資料結構。樹的結構本質上有遞迴的性質
——每乙個葉節點可以被一棵子樹所替代,反之亦然。實際上,每一種遞迴的結構都可以被轉化為(或等價於)樹形結構。
計算機中資料的描述方式
我們知道,資料可以用不同的形式進行描述或儲存在計算機儲存器中。最常見的資料描述方法有:公式化描述、鏈結描述、間接定址和模擬指標。
何謂資料結構
資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結構反映成分資料在計算機內部的儲存安排。資料結構是...
書摘 何謂資料結構
資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結構反映成分資料在計算機內部的儲存安排。資料結構是...
資料結構及演算法 何謂資料結構
何謂資料結構 資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由哪些成分數 據構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料 結構反映成分資料在計算機內部的儲...