『壹』 線性表的鏈式存儲結構與順序存儲結構所需的存儲空間一樣嗎
不一樣,線性存儲每個元素只要存元素的內容,鏈式存儲還需要多一塊區域來存儲相鄰節點的地址
『貳』 定義結構體時,結構體本身並不佔用存儲空間,系統並不給結構體分配存儲空間,這句話對嗎
不正確。
定義結構體時,系統按照各成員項的大小分配相應的存儲空間。
『叄』 線性表兩種 存儲結構各自的優缺點有哪些
線性表的鏈式存儲結構:
優點:
插入和刪除不需要移動插入時只需要對插入位置後的一個元素進行操作,不需要大量的移動元素。空間有效利用高。
缺點:
大量訪問操作時不如順序存儲結構,因為每次都需要從頭開始遍歷整個線性表直到找到相應的元素為止。
線性表的順序存儲結構:
優點:
可隨機存取表中任一元素。因為有下標可以操作可以快速的定位到指定位置的元素,但是不知道位置的話也需要順序遍歷。
缺點:
插入或刪除操作時,需大量移動元素。合適在很少進行插入和刪除運算的情況下。
(3)線性表定義存儲結構不佔用空間嗎擴展閱讀:
線性表的特徵
集合中必存在唯一的一個「第一元素」。
集合中必存在唯一的一個 「最後元素」 。
除最後一個元素之外,均有唯一的後繼(後件)。
除第一個元素之外,均有唯一的前驅(前件)。
線性表的基本操作
MakeEmpty(L) 這是一個將L變為空表的方法。
Length(L) 返回表L的長度,即表中元素個數。
Get(L,i) 這是一個函數,函數值為L中位置i處的元素(1≤i≤n)。
Prior(L,i) 取i的前驅元素。
Next(L,i) 取i的後繼元素。
Locate(L,x) 這是一個函數,函數值為元素x在L中的位置。
Insert(L,i,x)在表L的位置i處插入元素x,將原占據位置i的元素及後面的元素都向後推一個位置。
Delete(L,p) 從表L中刪除位置p處的元素。
IsEmpty(L) 如果表L為空表(長度為0)則返回true,否則返回false。
Clear(L)清除所有元素。
Init(L)同第一個,初始化線性表為空。
Traverse(L)遍歷輸出所有元素。
Find(L,x)查找並返回元素。
Update(L,x)修改元素。
Sort(L)對所有元素重新按給定的條件排序。
strstr(string1,string2)用於字元數組的求string1中出現string2的首地址。
參考資料來源:網路-線性表
『肆』 」結構體定義時,結構體本身並不佔用存儲空間,系統並不給結構體分配存儲空間。「這句話是對的嗎
對的,結構體類型的定義只是告訴編譯器該如何表示數據,但是它沒有讓計算機為其分配空間。結構體類型的定義就是結構體的聲明,不管是定義還是申明,這句話都是正確的。
只有在結構體變數,聲明的時候可以分配。要使用結構體,那麼就需要創建變數,也就是結構體變數。
創建一個結構體變數:struct book library
看到這條指令,編譯器才會創建一個結構體變數library,此時編譯器才會按照book模板為該變數分配內存空間,並且這里存儲空間都是以這個變數結合在一起的。
同時後面訪問結構體變數成員的時候,就要用到結構體變數名來訪問。
(4)線性表定義存儲結構不佔用空間嗎擴展閱讀:
結構體的大小通常是結構體所含變數大小的總和,但是對於結構體中比較小的成員,可能會被強行對齊,造成空間的空置,這和讀取內存的機制有關,為了效率。
通常32位機按4位元組對齊,小於的都當4位元組,有連續小於4位元組的,等到湊整,加上下一個元素超出一個對齊位置,才開始調整,比如3+2或者1+4,後者都需要另起(下邊的結構體大小是8bytes)。
struct s
{
char a;
short b;
int c;
}
相應的,64位機按8位元組對齊。
不過對齊不是絕對的,用#pragma pack()可以修改對齊,如果改成1,結構體大小就是成員變數大小的總和。
參考資料來源:網路--結構體
『伍』 線性表的存儲結構,在什麼情況下採用順序結構為什麼
看名字就差不多了吧
順序存儲結構就是用一組地址連續的存儲單元依次存儲該線性表中的各個元素。由於表中各個元素具有相同的屬性,所以佔用的存儲空間相同。因此,在內存中可以通過地址計算直接存取線性表中的任一元素。這種結構的特點是邏輯上相鄰的元素物理上也相鄰。用順序結構存儲的線性表稱作順序表。
線性表按鏈式存儲時,每個數據元素 (結點)的存儲包括數據區和指針區兩個部分。數據區存放結點本身的數據,指針區存放其後繼元素的地址 (沒有後繼元素時設置為空字元(Null).。只要知道該線性表的起始地址 (記錄在頭指針中),表中的各個元素就可通過其間的鏈接關系逐步找到
『陸』 下列敘述中正確的是( )。 A. 順序存儲結構的存儲一定是連續的,鏈式存儲結構的存儲空間不一定是
一定是連續的 這個是順序存儲結構的定義.
在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱作線性表的順序存儲結構.
只要是鏈表,就是內存中隨機存貯;只有數組這種靜態的內存分配方式才是連續存貯的
『柒』 線性表中所有的元素所佔的存儲空間是連續的,是什麼意思
線性表中有鏈表和順序表兩類,順序表所佔的存儲空間必須連續,鏈表沒有這個要求,連續指的是存儲空間的連續,順序存儲結構中,線性表中每一個數據元素在計算機存儲空間中的存儲地址由該元素在線性表中的位置序號唯一確定。
線性表是最常用的數據結構,它由一組數據元素組成。
注意:這里的數據元素是一個廣義的數據元素,並不僅僅是指一個數據。如,矩陣、學生記錄表等。
非空線性表的結構特徵:
有且只有一個根結點,它無前件
有且只有一個終端結點,它無後件
除根結點和終端結點之外,所有的結點有且只有一個前件和一個後件。線性表中結點的個數稱為結點的長度n。當n=0時,稱為空表。
『捌』 用順序表來存儲線性表時,不需要另外開辟空間來保存數據元素之間的關系。 線性表採用順序存儲,必須佔用
「線性表採用順序存儲,必須佔用一片連續的存儲單元。」這就是順序存儲,邏輯地址相鄰的元素物理地址也相鄰,如果能理解這個就能理解下一句話了。
"不需要另外開辟空間來保存數據元素之間的關系。"的意思是只存儲元素值就好了,因為鏈式存儲是要用指針來指示後繼或前趨的。
整個的意思就是順序存儲佔用物理地址連續的一塊空間來存儲元素,元素之間的關系就是相鄰元素間的關系。說順序存儲是相對鏈式存儲的,鏈式存儲佔用的物理地址可連續可不連續,所以要找到某個元素的後繼必須用指針來指示。
『玖』 1. 對於線性表的兩種存儲結構,如果要求存儲空間利用率比較高,同時在處理的過程中,各表長度基本不變方便
頻繁刪除插入操作用鏈表
頻繁查找用順序表