❶ 存儲結構的概念
存儲結構的概念
數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
數據的存儲結構是指數據的邏輯結構在計算機中的表示。
數據儲存結構
分類
順序存儲方法它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
鏈接存儲方法它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現。
存儲和鏈接存儲的基本原理
順序存儲和鏈接存儲是數據的兩種最基本的存儲結構。
在順序存儲中,每個存儲空間含有所存元素本身的信息,元素之間的邏輯關系是通過數組下標位置簡單計算出來的線性表的順序存儲,若一個元素存儲在對應數組中的下標位置為i,則它的前驅元素在對應數組中的下標位置為i-1,它的後繼元素在對應數組中的下標位置為i+1。在鏈式存儲結構中,存儲結點不僅含有所存元素本身的信息,而且含有元素之間邏輯關系的信息。
數據的鏈式存儲結構可用鏈接表來表示
其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點(以後簡稱為後繼結點或前驅結點)的存儲位置。通過結點的指針域(又稱為鏈域)可以訪問到對應的後繼結點或前驅結點,若一個結點中的某個指針域不需要指向其他結點,則令它的值為空(NULL)。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。
❷ 何謂數據的邏輯結構何謂數據的存儲結構兩者有何聯系
邏輯結構指反映數據元素之間的邏輯關系的數據結構,其中的邏輯關系是指數據元素之間的前後件關系,而與他們在計算機中的存儲位置無關。邏輯結構包括:
1、集合結構:數據結構中的元素之間除了「同屬一個集合」
的相互關系外,別無其他關系。
2、線性結構:數據結構中的元素存在一對一的相互關系。
3、樹形結構:數據結構中的元素存在一對多的相互關系。
4、圖形結構:數據結構中的元素存在多對多的相互關系。
存儲結構指數據元素連同其邏輯關系在存儲器上的存放形式,主要的有四類:順序、鏈接、索引、散列。一種數據結構可表示成一種或多種存儲結構。
兩者的關系在於:邏輯結構用於設計演算法,存儲結構用於演算法編碼實現。具體而言某種存儲結構與某種邏輯結構沒有必然的聯系,演算法的實現效率越高、解決問題越方便。
(2)存儲型結點擴展閱讀
數據結構是指同一數據元素類中各數據元素之間存在的關系。數據結構分別為邏輯結構、存儲結構(物理結構)和數據的運算。
數據的邏輯結構是從具體問題抽象出來的數學模型,是描述數據元素及其關系的數學特性的,有時就把邏輯結構簡稱為數據結構。邏輯結構是在計算機存儲中的映像,形式地定義為(K,R)(或(D,S)),其中,K是數據元素的有限集,R是K上的關系的有限集。
根據數據元素間關系的不同特性,通常有下列四類基本的結構:集合結構、線性結構、樹型結構、圖形結構。
線性結構的特點是數據元素之間是一種線性關系,數據元素「一個接一個的排列」。在一個線性表中數據元素的類型是相同的,或者說線性表是由同一類型的數據元素構成的線性結構。
線性表是最簡單、最基本、也是最常用的一種線性結構。
它有兩種存儲方法:順序存儲和鏈式存儲,它的主要基本操作是插入、刪除和檢索等。
數據結構在計算機中的表示(映像)稱為數據的物理(存儲)結構。它包括數據元素的表示和關系的表示。數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
1、順序存儲方法:它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
2、鏈接存儲方法:它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現
3、索引存儲方法:除建立存儲結點信息外,還建立附加的索引表來標識結點的地址。
4、散列存儲方法:就是根據結點的關鍵字直接計算出該結點的存儲地址。
數據結構中,邏輯上(邏輯結構:數據元素之間的邏輯關系)可以把數據結構分成線性結構和非線性結構。
線性結構的順序存儲結構是一種順序存取的存儲結構,線性表的鏈式存儲結構是一種隨機存取的存儲結構。線性表若採用鏈式存儲表示時所有結點之間的存儲單元地址可連續可不連續。邏輯結構與數據元素本身的形式、內容、相對位置、所含結點個數都無關。
參考資料來源:搜狗網路:數據結構
❸ 在數據結構中,邏輯結構和存儲結構之間的關系
存儲結構是邏輯結構的存儲映像,邏輯結構指的是數據間的關系,它又分為線性結構和非線性結構,這兩者並不沖突。一個指的是數據之間的關系,而另一個指這種關系在計算機中的表現形式。兩者的區別就在於給他們定義的特殊操作,它們都有」出「和」入「兩種操作,一個是「先進先出」,而一個是「後進先出」。
一種邏輯結構在計算機里可以用不同的存儲結構實現。比如邏輯結構中簡單的線性結構,可以用數組(順序存儲)或單向鏈表(鏈接存儲)來實現。邏輯結構:指各數據元素之間的邏輯關系。存儲結構:就是數據的邏輯結構用計算機語言的實現。
(3)存儲型結點擴展閱讀:
1、邏輯結構
是指數據之間的相互關系。通常分為四類結構:
集合:結構中的數據元素除了同屬於一種類型外,別無其它關系。
線性結構:結構中的數據元素之間存在一對一的關系。
樹型結構:結構中的數據元素之間存在一對多的關系。
圖狀結構:結構中的數據元素之間存在多對多的關系。
2、存儲結構
是指數據結構在計算機中的表示,又稱為數據的物理結構。通常由四種基本的存儲方法實現:
順序存儲方式。數據元素順序存放,每個存儲結點只含一個元素。存儲位置反映數據元素間的邏輯關系。存儲密度大。但有些操作(如插入、刪除)效率較差。
數據元素間的邏輯關系。這種方式不要求存儲空間連續,便於動態操作(如插入、刪除等),但存儲空間開銷大(用於指針),另外不能折半查找等。
索引存儲方式。除數據元素存儲在一組地址連續的內存空間外,還需建立一個索引表,索引表中索引指示存儲結點的存儲位置(下標)或存儲區間端點(下標)。
散列存儲方式。通過散列函數和解決沖突的方法,將關鍵字散列在連續的有限的地址空間內,並將散列函數的值解釋成關鍵字所在元素的存儲地址。其特點是存取速度快,只能按關鍵字隨機存取,不能順序存取,也不能折半存取。
❹ 鏈式存儲設計結點內的存儲單元地址為什麼要連續
鏈式存儲設計時,各個不同結點的存儲空間可以不連續,但是結點內的存儲單元地址則必須連續。
typedef struct LNode {
int value; // value中存放結點值域,默認是int型
struct Lnode *next;//指向後繼結點的指針
}LNode; // 定義單鏈表結點類型
上述定義了一個結構體,包括兩部分,一是值域,二是指針域;每當定義一個結點都會產生這兩個區域。
這個value與next域必須是挨著的,稱這個結點為內部。
假如我們定義若干個不同的結點,把它們連接起來成為一個單鏈表。
value區域,箭頭區域則是指針域指向邏輯上相鏈接的下一個結點,但是它們在空間上不一定連續。
而對於它們的結點內部一定是連續的。若第一個結點佔用兩個地址,那麼value域的起始地址是1,則指針域的地址就是2。同理若第二個結點的value地址是10,則next域就是11。
因此,在進行鏈式存儲設計時,各個不同結點完全可以存儲在不連續的空間上,而對於同一個結點內部,不論劃分多少個區域,兩個也好,三個也罷,總之內部的單元存儲地址是連續的。