1、資料
資料是資訊的的載體,是描述客觀事物的數、字元,以及所有能輸入到計算機中並被電腦程式識別和處理的符號的集合。資料大致可以分為
數值型資料:整數、浮點數、複數、雙精度數等
非數值型資料:字元、字串,以及文字、圖形、影象、語音等資料
2、資料結構
data_structure=
資料結構有兩個層次:抽象
(邏輯結構)
、實現(儲存結構)。
資料的邏輯結構是指從解決問題的需要出發,為實現必要的功能所建立的資料結構,其屬於使用者
(自定義)
的檢視,是面向問題的。
資料的物理結構是指資料應如何在計算機中存放,是資料邏輯結構的物理儲存方式,其屬於具體實現的檢視,是面向計算機的。
當解決乙個實際問題時,通常是具體
(具體實際問題)
到抽象(資料的邏輯結構)
,再抽象
(資料的邏輯結構)
到具體(資料的物理結構)。
注:邏輯結構為使用者自定義的資料間的邏輯關係,物理結構為邏輯結構在計算機中的實現,可有多種實現方式
(如,使用者自定義了棧,其規定了各資料元素為先進後出,而這種關係在計算機中可以有順序、鏈式等多種實現方式)
。依據資料元素間的關係不同,分為線性結構與非線性結構。
線性結構也稱為線性表,這種結構中所有資料元素都按某種次序排列在乙個線性序列中
(除首元素之外的任何的元素只有乙個直接前驅,除尾元素之外的任何元素只有乙個直接後驅)
。根據對其中資料元素的訪問方法的不同分為:
c 直接訪問結構:陣列
(下標)
、檔案(記錄號)
、....
l 順序訪問結構:棧、佇列、優先順序佇列、....
l 字典結構:通過關鍵字key
識別記錄、
....
非線性結構中各元素不再保持在乙個線性序列中,乙個元素可能與零個或多個資料元素發生關係。根據關係的不同分為:
l 層次結構
(層上的元素可以有零個或者多個下層元素)
:樹、....
l 群結構(所有元素無順序關係)
:集合、圖、網路、....
另一說法:棧是一種順序訪問結構;集合是一種群結構;以此類推...
資料的物理結構是資料的邏輯結構
(資料間邏輯關係)
在計算機中具體實現方法:
l 基於陣列的順序儲存方法:將邏輯上相鄰的元素放在物理位置上相鄰的儲存單元
l 基於鍊錶的鏈式儲存方法:邏輯關係由附加的指標指示
l 索引儲存方法:儲存元素資訊的同時,還建立附加的索引表
l 雜湊儲存方法:根據結點的關鍵碼通過某個函式計算,直接得到儲存位址
注:順序儲存方法與鏈式儲存方法為最常用的兩種。
資料型別是指一種型別以及定義於這個值集合上的一組操作的總稱。
資料型別從本質上說是一種簡單的邏輯結構
(使用者自定義的,用於描述實際問題所需要的資料的:整型、字元型...
;只不過是使用者已經定義好的慣例!)
。對於使用者而言,不必考慮其具體的物理結構/
實現細節
(如char佔8
位 ...)。
注:陣列既可以指一種資料型別
(邏輯結構)
,又可以指一種實現方式
(物理結構)
。「陣列」
常用於指一塊連續的記憶體空間,每乙個記憶體空間儲存多個固定長度的資料項,從該意義上講,其為乙個儲存結構;陣列也可以表示一種由一組型別相同的資料項構成的資料型別,每乙個資料項由乙個特定的索引號
(下標)
來標識,從該意義上講,其為一種資料型別
(邏輯結構)
,可由多種不同的儲存方法實現。
抽象資料型別通常是指由使用者自定義的,用於表示應用問題的資料模型
(是使用者根據實際需要,組織基本資料型別及相關服務(操作))
。在c++
中,使用關鍵字
struct
、class
等定義抽象資料型別。
抽象資料型別的特徵是使用與實現分離,實現封裝與資訊隱蔽。即,在設計抽象資料型別時,把型別的宣告與實現分離開來。從使用者的角度來看,只要了解該抽象資料型別的規格說明,就可以利用公共介面中的服務來使用屬於這個型別的資料,而不必關心其物理實現。
在物件導向的程式中,通過建立類來實現資料結構。類由基本資料型別及相關服務
(操作)
組成。c++
中的標準類庫都是使用者自定義的抽象資料型別。
資料結構概述
還可以通過另乙個方面來看資料結構,那就是從它們的強項和弱項來看。在這裡用 的 方式來概述主要資料結構。下面的表顯示了不同資料結構的優缺點,大致給出它們的特性,就象從天空中鳥瞰地面的風景一樣。所以如果對其中的術語不太清楚的話,請不要太著急。陣列 插入快,如果知道下標 但查詢慢,刪除慢,大小固定 有序陣...
資料結構 概述
資料結構概述 定義 我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢 某個元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這 個相應的操作也叫演算法。資料結構 個體 個體的關係 演算法 對儲存資料的操作 演...
資料結構概述
資料結構概述 定義 我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構儲存到主儲存器中 記憶體 儲存乙個班級的成績 陣列 要是10000個人 還可以陣列但是 很困難,陣列是連續存放的。10000個連續的空間,資料儲存關鍵。資料量很大,沒有連續的那麼多空間。鍊錶 樹 的形式 做人事管理系...