當前位置:首頁 » 服務存儲 » 線性表在物理存儲空間必須連續嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

線性表在物理存儲空間必須連續嗎

發布時間: 2023-02-07 23:33:16

A. 線性表採用鏈式存儲時,結點的存儲地址是連續的嗎

用任意的一組存儲單元來存放線性表的結點,不同組的存儲單元既可以是連續的,也可以是不連續的。

線性表有順序表和鏈表兩種存儲結構。

順序表:線性表的結點按邏輯次序依次存放在一組地址連續的存儲單元里的方法。

鏈表:用一組任意的存儲單元來存放線性表的結點,這組存儲單元既可以是連續的,也可以是不連續的

(1)線性表在物理存儲空間必須連續嗎擴展閱讀:

線性表分類:

我們說「線性」和「非線性」,只在邏輯層次上討論,而不考慮存儲層次,所以雙向鏈表和循環鏈表依舊是線性表。

在數據結構邏輯層次上細分,線性表可分為一般線性表和受限線性表。一般線性表也就是我們通常所說的「線性表」,可以自由的刪除或添加結點。受限線性表主要包括棧和隊列,受限表示對結點的操作受限制。

線性表優點:

線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種數據結構在實際應用中是廣泛採用的一種數據結構。

參考資料:網路——線性表

B. 用順序表來存儲線性表時,不需要另外開辟空間來保存數據元素之間的關系。 線性表採用順序存儲,必須佔用

「線性表採用順序存儲,必須佔用一片連續的存儲單元。」這就是順序存儲,邏輯地址相鄰的元素物理地址也相鄰,如果能理解這個就能理解下一句話了。
"不需要另外開辟空間來保存數據元素之間的關系。"的意思是只存儲元素值就好了,因為鏈式存儲是要用指針來指示後繼或前趨的。
整個的意思就是順序存儲佔用物理地址連續的一塊空間來存儲元素,元素之間的關系就是相鄰元素間的關系。說順序存儲是相對鏈式存儲的,鏈式存儲佔用的物理地址可連續可不連續,所以要找到某個元素的後繼必須用指針來指示。

C. 什麼是線性表線性表有哪兩種存儲結構它們是如何存儲數據元素的各有什麼優點

線性表:有n(n>0)的數據元素a1,a2,a3,.....,an組成的有限序列。

兩種存儲結構:

順序存儲結構:存取較快,插入刪除較麻煩。

鏈式存儲結構:存取較慢,插入刪除叫簡單。

存儲數據元素:

順序存儲結構:直接存取。優點空間連續,位置明確。

鏈式存儲結構:由於鏈表特徵,需要從表頭掃面。優點空間分散,位置不明確。

線性表中數據元素之間的關系是一對一的關系,即除了第一個和最後一個數據元素之外,其它數據元素都是首尾相接的,注意,這句話只適用大部分線性表,而不是全部。比如,循環鏈表邏輯層次上也是一種線性表。



(3)線性表在物理存儲空間必須連續嗎擴展閱讀:

線性表中的個數n定義為線性表的長度,n=0時稱為空表。在非空表中每個數據元素都有一個確定的位置,如用ai表示數據元素,則i稱為數據元素ai在線性表中的位序。

線性表的相鄰元素之間存在著序偶關系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一個順序表,則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素。

當i=1,2,…,n-1時,ai有且僅有一個直接後繼,當i=2,3,…,n時,ai有且僅有一個直接前驅。

D. 線性表採用順序存儲,是否必須佔用一片連續的存儲單元

是的
線性表的順序存儲相當於用數組存儲
它的內存單元是連續的

E. C中線性表和鏈表的區別

最近經常聽到朋友面試有被問到鏈表的問題,自己也總結了一下,應該算是比較入門向的介紹吧

線性表(數組)

數據與元素一一對應 除了第一個和最後一個其他數據元素首位相接

順序表

線性表中用地址連續的存儲單元來存放數據元素的數據結構,結點放在地址連續的存儲單元中(實現方式為數組)——

鏈表

①物理存儲單元上非連續,非順序的存儲結構(內存之中不連續)

②數據元素之間的邏輯順序是通過鏈表中的指針鏈接次序實現

③鏈表由一系列結點組成(鏈表中的元素稱為結點),結點可以在運行時動態生成

④結點包括兩個部分:1.存儲數據元素的數據域

                                    2.存儲下一個結點地址的指針域

(實現方式為指針)

ps1:尾結點 指針域為null,若尾結點指針指向首結點,那麼構成環形鏈表

相對於 線性表 的優勢

①鏈表比較方便插入和刪除操作,線性表中插入一個元素,那麼後面的元素地址都要往後移,刪除同理。而鏈表只需要修改結點中的指針信息,不需要修改結點地址。

②線性表在建立時就確定的總長度 因此初始長度過大或者過小都會引起內存問題:如果內存中沒辦法一次性給出整個線性表所需的存儲空間那麼就會提示內存不足,鏈表可以用分散的存儲空間

③鏈表的擴展性比線性表(數組)好,一個線性表在建立後空間大小是固定的,要擴展只能新建一個更大的,而鏈表可以很方便的擴展

線性表相對於鏈表的優勢

①線性表存儲空間小,因為鏈表要在存儲單元里放一個或者兩個指針(雙向鏈表)

②線性表內容可以隨機訪問,因為是連續的內存單元,地址連續所以在這個區間內可以進行隨機,鏈表存儲地址

③查找速度由於存儲地址原因也快於鏈表

雙向鏈表

一句話 結點中有兩個指針 一個指針指向直接前驅,一個指針指向直接後繼

優勢:查找更方便,用於大量數據的遍歷

相對於單向 存儲空間也更大

F. 關於數據結構的題

( × )1. 鏈表的每個結點中都恰好包含一個指針。
答:錯誤。鏈表中的結點可含多個指針域,分別存放多個指針。例如,雙向鏈表中的結點可以含有兩個指針域,分別存放指向其直接前趨和直接後繼結點的指針。
( × )2. 鏈表的物理存儲結構具有同鏈表一樣的順序。
錯,鏈表的存儲結構特點是無序,而鏈表的示意圖有序。
( × )3. 鏈表的刪除演算法很簡單,因為當刪除鏈中某個結點後,計算機會自動地將後續的各個單元向前移動。
錯,鏈表的結點不會移動,只是指針內容改變。
( × )4. 順序表結構適宜於進行順序存取,而鏈表適宜於進行隨機存取。
錯,正好說反了。順序表才適合隨機存取,鏈表恰恰適於「順藤摸瓜」
( × )5. 順序存儲方式的優點是存儲密度大,且插入、刪除運算效率高。
錯,前一半正確,但後一半說法錯誤,那是鏈式存儲的優點。順序存儲方式插入、刪除運算效率較低,在表長為n的順序表中,插入和刪除一個數據元素,平均需移動表長一半個數的數據元素。
( × )6. 線性表在物理存儲空間中也一定是連續的。
錯,線性表有兩種存儲方式,順序存儲和鏈式存儲。後者不要求連續存放。
( √ )7. 棧和隊列的存儲方式既可是順序方式,也可是鏈接方式。
( √ )8. 兩個棧共享一片連續內存空間時,為提高內存利用率,減少溢出機會,應把兩個棧的棧底分別設在這片內存空間的兩端。
( × )9. 隊是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進後出型結構。 錯,後半句不對。
( × )10. 一個棧的輸入序列是12345,則棧的輸出序列不可能是12345。 錯,有可能。

G. 線性表鏈式存儲結構和順序存儲結構的存儲空間一定連續嗎

不一樣,線性存儲每個元素只要存元素的內容,鏈式存儲還需要多一塊區域來存儲相鄰節點的地址

H. 線性表採用鏈表存儲時,結點之間和結點內部的存儲空間可以是不連續的。 C++里,這句話對不對 結點

正確。隊列先進先出的棧是先進後出的它們都是線性表線性表是最基礎、最常用的數據結構,線性表中數據元素都是一對一的對應關系。可以不連續,存儲空間分兩段,一段存放數據,另一段存放著地址。

順序存儲需要開辟一個定長的空間,讀寫速度快,缺點不可擴充容量(如果要擴充需要開辟一個新的足夠大的空間把原來的數據重寫進去)。



(8)線性表在物理存儲空間必須連續嗎擴展閱讀:

物理位置相鄰表示線性表中數據元素間的邏輯關系,可隨機存取表中任一元素。鏈式表示指的是用一組任意的存儲單元存儲線性表中的數據元素,稱為線性表的鏈式存儲結構。

存儲單元可以是連續的,也可以是不連續的。在表示數據元素之間的邏輯關系時,除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息,這兩部分信息組成數據元素的存儲映像,稱為結點。

I. 線性鏈表的地址必須是連續的,為什麼呢

是嗎?我記得線性鏈表邏輯上是連續的,物理地址上可以不連續。鏈表的出現就是為了解決佔用大面積的連續物理地址,導致內存使用不均勻。