1. 線性表的鏈式儲存結構與順序儲存結構所需要的空間是相同的嗎
順序存儲需要開辟一個定長的空間,讀寫速度快,缺點不可擴充容量(如果要擴充需要開辟一個新的足夠大的空間把原來的數據重寫進去)
鏈式存儲無需擔心容量問題,讀寫速度相對慢些,由於要存儲下一個數據的地址所以需要的存儲空間比順序存儲大。
我感覺java數據結構沒有c、c++來的重要。
2. 順序存儲結構和鏈式存儲結構優缺點
順序存儲結構和鏈式存儲結構的區別
鏈表存儲結構的內存地址不一定是連續的,但順序存儲結構的內存地址一定是連續的;
鏈式存儲適用於在較頻繁地插入、刪除、更新元素時,而順序存儲結構適用於頻繁查詢時使用。
順序存儲結構和鏈式存儲結構的優缺點:
空間上
順序比鏈式節約空間。是因為鏈式結構每一個節點都有一個指針存儲域。
存儲操作上:
順序支持隨機存取,方便操作
插入和刪除上:
鏈式的要比順序的方便(因為插入的話順序表也很方便,問題是順序表的插入要執行更大的空間復雜度,包括一個從表頭索引以及索引後的元素後移,而鏈表是索引後,插入就完成了)
例如:當你在字典中查詢一個字母j的時候,你可以選擇兩種方式,第一,順序查詢,從第一頁依次查找直到查詢到j。第二,索引查詢,從字典的索引中,直接查出j的頁數,直接找頁數,或許是比順序查詢最快的。
3. 鏈接存儲的存儲結構所佔存儲空間分幾部分
第一部分:用於存放結點值;
第二部分:用於存放表示結點間關系的指針。
4. 鏈式存儲結構所佔存儲空間至少包含兩部分:一部分存儲結點數據值,一部分存儲下一個結點的地址
嗯 對的
存儲結點數據值,也可以用數據的地址
存下一個結點的地址就是常見的next指針了
5. 數據結構,,,假設順序存儲結構每個結點佔用50個存儲單元,同樣的內容為什麼鏈式存儲結構說每個結點占
一個用來存儲內容,一個用來存儲下一個節點的地址,一共兩個
6. 順序存儲結構和鏈式存儲結構的優缺點
存儲空間
順序存儲結構是要求事先分配存儲空間的,即靜態分配,所以難以估計存儲空間的大小。估計過大會造成浪費,估計太小又容易造成空間溢出。
而鏈式存儲結構的存儲空間是動態分配的,只要計算機內存空間還有空閑,就不會發生溢出。
另外還可以從存儲密度的角度考慮,存儲密度的定義公式為:一般來說,存儲密度越大,存儲空間的利用率就越高。
顯然,順序存儲結構的存儲密度為1,而鏈式存儲結構的存儲密度小於1。
運算時間
順序表是一種順序存儲結構,對表中任一結點都可以在O(1)時間復雜度下直接訪問;而訪問鏈表中的某個結點時,必須從頭指針開始沿著鏈表順序查找,時間復雜度為O(n)。
鏈表順序查找,時間復雜度為O(n)。
因此,如果對線性表的操作以查找為主,則採用順序存儲結構較好;若以插入、刪除為主,則採用鏈式存儲結構為宜。
7. 鏈式存儲結構比順序存儲結構節省存儲空間嗎
不是,因為鏈式存除了數據域,還需要指針域。
8. 線性表鏈式存儲結構的優點和缺點有什麼
一、線性表鏈式存儲結構的優點:
1、均勻性:雖然不同數據表的數據元素可以是各種各樣的,但對於同一線性表的各數據元素必定具有相同的數據類型和長度。對於線性鏈表,可以從頭指針開始,沿各結點的指針掃描到鏈表中的所有結點。
2、有序性:各數據元素在線性表中的位置只取決於它們的序號,數據元素之前的相對位置是線性的,即存在唯一的第一個和最後一個的數據元素,除了第一個和最後一個外,其它元素前面均只有一個數據元素(直接前驅)和後面均只有一個數據元素(直接後繼)。
二、線性表鏈式存儲結構的缺點:
線性表鏈式存儲結構不要求邏輯上相鄰的元素在物理位置上是相鄰,因此,它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點。
(8)鏈式存儲結構為什麼占空間擴展閱讀:
線性表鏈式存儲結構的其他介紹:
一般在計算機的硬碟中,文件都是鏈式存儲的。我們知道,多個扇區組成一個簇,簇是計算機存儲數據的基本單位。
而一個文件是存儲在多個在空間上也許並不相連的簇中的,這就是鏈式存儲。但是為了能夠讀取出這個文件,計算機會在該文件第一部分的尾部寫上第二部分所在的簇號。
另一部分的尾部又寫上第三部分,以此類推,最後一部分寫上一段代碼,表示這是該文件的最後一部分。值得一提的是,高簇號在後。(如代碼所示的1234實為簇3412)文件所佔簇可認為是隨機分配的。
9. 線性表的鏈式存儲結構與順序存儲結構所需的存儲空間一樣嗎
不一樣,線性存儲每個元素只要存元素的內容,鏈式存儲還需要多一塊區域來存儲相鄰節點的地址
10. 鏈接存儲的存儲結構所佔存儲空間_______。
寫在前面的話:數據結構很多人都是只看不去實戰,這樣很難取得很好的效果,我會在每個知識點下面配套幾道從Leetcode和劍指offer上找到的經典題目(比如本章說完鏈表以後,會配套LeetCode.206等題目)。
程序這種東西還是多敲鍵盤比較好,紙上得來終覺淺,絕知此事要躬行。
數據結構中的線性表 是理解圖,堆棧,二叉樹的基礎,他的官方定義為:
線性表 是 零個或多個數據元素的有限序列。
比如:a1, a2, a3 ,a4, ...... , ai-1, ai, ai+1,....., an
ai-1 是ai的前驅元素,而ai+1是ai的後繼元素。我們可以得知,當i=2, ...., n-1時,他們只有唯一的一個前驅元素和後繼元素。
並且,在線性表中,a1~an所代表的元素必須是相同的數據類型的元素。(比如a1-an代表有n個不同類型的人,但他們都是人,你不能在其中添加一個帽子的存儲)。
線性表在物理結構上可以分為:順序存儲結構和鏈表存儲結構。
第一節:首先我們了解下順序存儲結構:
順序存儲結構就是在內存空間中開辟一片連續的空間,然後把數據按照順序進行存儲的一種方式。
他包含三個屬性:1、存儲空間的起始位置(也就代表我們定義了一個數組)2、最大的存儲容量(數組最大長度)3、線性表的當前長度
屬性2和3的區別是:數組的長度是基本不變的,這是我們在申請內存空間的時候就已經確定好的,而我們的線性表的長度是代表著元素個數,是不確定的長度。則兩者的關系為: 線性表的當前長度<=數組長度;
1 順序存儲結構的插入與刪除:
1.1、插入思路:
①、我們首先需要考慮異常(插入位置異常,插入後的長度異常等)
②、從最後一個元素遍歷到插入位置,分別將每一個元素向後移動一個位置;
③、插入目標元素,表長加1;
1.2、刪除思路:
①、我們仍然需要首先考慮異常(刪除位置錯誤等)
②、查找到需要刪除的位置,遍歷將其後的每一個元素向前進行移動。
2 總結
我們可以看出,在插入演算法中,順序存儲結構中元素在插入位置的過程中,多數元素都需要進行移動,來給插入的元素騰位置。並且,在刪除演算法中也是類似的道理。我們計算下他們的時間復雜度:順序存儲結構在讀取數據的時候,因為可以按照list[index]進行讀取,所以時間復雜度為O(1),但在插入和刪除演算法的時候,平均的時間復雜度為O(n);
我們可以看出順序存儲結構的優點和缺點:
優點是:不需要為表示元素之間的邏輯關系而增加額外存儲空間,可以快速的存取表中的任一位置的元素。
缺點是:插入和刪除操作需要移動大量的元素。當線性表變化較大的時候,難以確定存儲空間的容量。