A. 順序存儲結構和鏈式存儲結構優缺點
順序存儲結構和鏈式存儲結構的區別
鏈表存儲結構的內存地址不一定是連續的,但順序存儲結構的內存地址一定是連續的;
鏈式存儲適用於在較頻繁地插入、刪除、更新元素時,而順序存儲結構適用於頻繁查詢時使用。
順序存儲結構和鏈式存儲結構的優缺點:
空間上
順序比鏈式節約空間。是因為鏈式結構每一個節點都有一個指針存儲域。
存儲操作上:
順序支持隨機存取,方便操作
插入和刪除上:
鏈式的要比順序的方便(因為插入的話順序表也很方便,問題是順序表的插入要執行更大的空間復雜度,包括一個從表頭索引以及索引後的元素後移,而鏈表是索引後,插入就完成了)
例如:當你在字典中查詢一個字母j的時候,你可以選擇兩種方式,第一,順序查詢,從第一頁依次查找直到查詢到j。第二,索引查詢,從字典的索引中,直接查出j的頁數,直接找頁數,或許是比順序查詢最快的。
B. 需要預先分配較大的空間,具有隨機訪問特性的線性表,其儲存結構是()
D、其實就是數組。其他選項都是鏈表不符合要求。
舉個例子:隨機存取存儲器(RAM)是計算機存儲器中最為人熟知的一種。之所以RAM被稱為「隨機存儲」,是因為可以直接訪問任一個存儲單元,只要知道該單元所在記憶行和記憶列的地址即可。
所以線性表的順序存儲結構是一種隨機存取的存儲結構,可以想像成數組。而線性表的鏈接存儲結構,要對某結點進行存取,都得從鏈的頭指針指向的結點開始,這是一種順序存取的存儲結構。
(2)順序存儲結構有利於隨機訪問擴展閱讀:
線性表中的個數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有且僅有一個直接前驅。
C. 線性表兩種 存儲結構各自的優缺點有哪些
線性表的鏈式存儲結構:
優點:
插入和刪除不需要移動插入時只需要對插入位置後的一個元素進行操作,不需要大量的移動元素。空間有效利用高。
缺點:
大量訪問操作時不如順序存儲結構,因為每次都需要從頭開始遍歷整個線性表直到找到相應的元素為止。
線性表的順序存儲結構:
優點:
可隨機存取表中任一元素。因為有下標可以操作可以快速的定位到指定位置的元素,但是不知道位置的話也需要順序遍歷。
缺點:
插入或刪除操作時,需大量移動元素。合適在很少進行插入和刪除運算的情況下。
(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的首地址。
參考資料來源:網路-線性表
D. 某線性表採用順序存儲結構,每個元素佔4個存儲單元,首地址為100,則第12個元素的 存儲地址為( )
144。
100是第一個,104是第二個。
假設首元素的下標為0,下標為11的元素的存儲地址=100+(11-0)*4=144。
順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像。以「物理位置相鄰」來表示線性表中數據元素間的邏輯關系,可隨機存取表中任一元素。
由此得到的存儲結構為順序存儲結構,通常順序存儲結構是藉助於計算機程序設計語言(例如c/c++)的數組來描述的。
(4)順序存儲結構有利於隨機訪問擴展閱讀:
順序存儲主要使用數組,採用順序存儲的優點:可以隨機訪問數組中的元素,即通過下標去訪問數組的元素;其缺點主要有二:
其一,由於C語言中,數組一旦被聲明,其長度即該結構佔用的存儲空間是固定的,申請的空間過大,造成空間的浪費同時也為維護該結構造成困難,申請過小,在程序運行過程中,有可能會造成結構空間不足,導致程序故障;
其二,在插入,刪除數據時,通常會導致大量數據的移動,在等概率的前提下,平均需要移動整個結構中一半的元素,如果元素個體比較復雜問題將更為明顯。
E. 哪種存儲方式下的線性表,可以隨機訪問任一元素
可以參考下面幾種解釋
1、解釋一:
順序存儲結構的地址在內存中是連續的所以可以通過計算地址實現隨機存取,與此相對鏈式存儲結構的存儲地址不一定連續,只能通過第個結點的指針順序存取
2、解釋二:
線性表的順序存儲結構可以通過線性表的首址加偏移的方法計算出來第i個數據的位置a+i*sizeof(單個結構)而線性表的鏈式存儲結構要訪問第i個數據,就必須先訪問前面的i-1個數據
F. 順序存儲的優點
順序存儲的優點有:
1、空間利用率高。(局部性原理,連續存放,命中率高)
2、存取速度高效,通過下標來直接存儲。
3、無需為表示結點間的邏輯關系而增加額外的存儲空間。
4、可方便地隨機存取表中的任一元素。
順序存儲缺點
1、插入或刪除運算不方便,除表尾的位置外,在表的其它位置上進行插入或刪除操作都必須移動大量的結點,其效率較低。
2、由於順序表要求佔用連續的存儲空間,存儲分配只能預先進行靜態分配。因此當表長變化較大時,難以確定合適的存儲規模。
3、不可以增長長度,有空間限制,當需要存取的元素個數可能多於順序表的元素個數時,會出現"溢出"問題。當元素個數遠少於預先分配的空間時,空間浪費巨大。
G. 下述哪一條是順序存儲結構的優點
順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),結點之間的邏輯關系沒有佔用額外的存儲空間。採用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。
優點:隨機存取表中元素。缺點:插入和刪除操作需要移動元素。
H. C語言:為什麼線性結構的順序存儲是一種隨機存取存儲結構謝謝
順序存儲中,一般一個元素緊緊地挨著另外的一個元素,設序號為i 的元素的存儲位置為Li,每個元素長度為d,則序號為j的元素的存儲位置為Li + d(j - i),這個式子對所有元素序號(下標)都是一樣的計算時間,也就是說,訪問任何一個元素的時間都是相同的,因此是隨機存取
當然,C語言中自然就是數組,一個接一個存放,結論一樣的
I. 順序存儲結構的特點是什麼
(1)利用數據元素的存儲位置表示線性表中相鄰數據元素之間的前後關系,即線性表的邏輯結構與存儲結構(物理結構)一致,邏輯位置相鄰,存儲位置也相鄰。
(2)在訪問順序存儲的線性表時,可以利用公式(2-2),快速地計算出任何一個數據元素的存儲地址。因此,可以粗略地認為,訪問每個數據元素所花費的時間相等。這種存取元素的方法稱為隨機存取法,使用這種存取方法的存儲結構稱為隨機存儲結構。
J. 鏈式存儲結構,為什麼不利於隨機訪問
順序存儲結構存儲位置和索引有對應關系,鏈式存儲結構隨機訪問要遍歷到指定項