邏輯結構和儲存結構的區別和相同點?大資料美女2020-10-28 09:45:36

什麼是邏輯結構?

簡單說,邏輯結構就是資料之間的關係。而按資料之間的關係來說,邏輯結構大概可以分為兩種:線性結構和非線性結構(集合、樹、網)。

線性結構:有且只有一個開始結點和一個終端結點,並且所有結點都最多隻有一個直接前驅和一個直接後繼。例如:線性表,典型的線性表有:順序表、連結串列、棧(順序棧、鏈棧)和佇列(順序佇列、鏈佇列)。它們共同的特點就是資料之間的線性關係,除了頭結點和尾結點之外,每個結點都有唯一的前驅和唯一的後繼,也就是所謂的一對一的關係。

非線性結構:對應於線性結構,非線性結構也就是每個結點可以有不止一個直接前驅和直接後繼。常見的非線性結構包括:樹(二叉樹)、圖(網)等。

什麼是儲存結構?

邏輯結構指的是資料間的關係,而儲存結構是邏輯結構的儲存映像。通俗的講,可以將儲存結構理解為邏輯結構用計算機語言的實現。常見的儲存結構有順序儲存、鏈式儲存、索引儲存以及雜湊儲存(雜湊表)。

順序儲存:把邏輯上相鄰的節點儲存在物理位置上相鄰的儲存單元中,結點之間的邏輯關係由儲存單元的鄰接關係來體現。由此得到的儲存結構為順序儲存結構,通常順序儲存結構是藉助於陣列來描述的。優點:節省空間,可以實現隨機存取;缺點:插入、刪除時需要移動元素,效率低。

鏈式儲存:在計算機中用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的)。特點是元素在物理上可以不相鄰,所以每個資料元素包括了一個數據域和一個指標域,資料域用來存放資料,而指標域用來指向其後繼結點的位置。優點:插入、刪除靈活;缺點:不能隨機存取,查詢速度慢。

邏輯結構和儲存結構的區別

這兩者並不衝突,一個指的是資料之間的關係,而另一個指這種關係在計算機中的表現形式。比如,線性表中的棧,資料元素之間的關係是一對一的,除頭和尾結點之外的每個結點都有唯一的前驅和唯一的後繼,這體現的是邏輯結構;而對於棧中的結點來說,它們可以順序儲存(也就是順序棧),取一段連續的儲存空間,將棧結點按順序存入,每個結點和其前驅和後繼在物理上都是相鄰的。同時,棧結點也可以鏈式儲存(鏈棧),每個結點中包括資料域和指標域,而指標域就是用來指向其後繼的,在訪問時就可以透過指標來找到其後繼進行訪問,每個結點之間物理上可以相鄰也可以不相鄰。