㈠ 線性鏈表的存儲方式是什麼
利用C中數組和結構體在內存中為連續分配內存單元(就是無間隙) ,一般使用結構體作為線性鏈表的結點(其中創建了一個或兩個指向本身結構體的指針),指針指向後一個結構體的首地址; 就成單鏈表;如果其中建了兩個指針就可以做成雙鏈表;邏輯上是連續的,但物理上不一定連續。
㈡ 線性表鏈式存儲結構是什麼
線性表是一種邏輯結構,它有兩種存儲方式,順序存儲和鏈式存儲。
順序存儲對應的是順序表,鏈式存儲對應的有單鏈表,雙鏈表,循環鏈表以及靜態鏈表。
其中,線性表的鏈式存儲又稱為單鏈表。
註:雙鏈表、循環鏈表等都是由單鏈表演化而來。
單鏈表:一個後繼指針,一個頭結點和頭指針。每一個結點是存儲下一個結點的存儲位置,因此最後一個結點存儲null,也就是空值。
雙鏈表:雙鏈表結點中有兩個指針,prior和next,即有前驅指針和後繼指針,分別指向前驅和後繼結點。
循環鏈表:循環鏈表和單鏈表的區別在於最後一個結點的指針不是null(回到單鏈表的知識去看一下吧),而是指向頭結點,從而整個鏈表成為了一個環。
循環雙鏈表:循環雙鏈表中頭結點的指針prior指針還要指向表尾結點。
註:在循環雙鏈表L中,當循環雙鏈表為空表時,其頭結點的prior域和next域都等於L。
靜態鏈表:靜態鏈表是藉助數組來描述線性表的鏈式存儲結構。結點有data域和指針域next。按照我的理解:其實靜態鏈表和單鏈表在結構上差不太多,但是靜態鏈表又和順序表很像,可以把靜態鏈表看作是單鏈表和順序表的結合吧。
鏈式存儲結構就這幾種了。
㈢ 線性表的鏈式存儲結構是一種()存儲結構
線性表的鏈式存儲結構是一種順序存儲的存儲結構。
線性表的鏈式存儲結構中的每一個存儲結點不僅含有一個數據元素,還包括指針,每一個指針指向一個與本結點有邏輯關系的結點,此類存儲方式屬於順序存儲;線性表是最基本、最簡單、也是最常用的一種數據結構。線性表(linear list)是數據結構的一種,一個線性表是n個具有相同特性的數據元素的有限序列。
(3)數據線型鏈式存儲擴展閱讀:
線性表中數據元素之間的關系是一對一的關系,即除了第一個和最後一個數據元素之外,其它數據元素都是首尾相接的(注意,這句話只適用大部分線性表,而不是全部。
比如,循環鏈表邏輯層次上也是一種線性表(存儲層次上屬於鏈式存儲,但是把最後一個數據元素的尾指針指向了首位結點)。
㈣ 鏈式存儲結構屬於線性結構還是非線性的存儲結構
鏈表是線性表的鏈式存儲結構
線性表的鏈式存儲表示的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。因此,為了表示每個數據元素與其直接後繼數據元素
之間的邏輯關系,對數據元素來說,除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息(即直接後繼的存儲位置)。由這兩部分信息組成一個「結點」,表示線性表中一個數據元素
。
鏈表(Linked
list)是一種常見的基礎數據結構,是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點里存到下一個節點的指針(Pointer)。由於不必按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表:順序錶快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而順序表相應的時間復雜度分別是O(logn)和O(1)。
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由於增加了結點的指針域,空間開銷比較大。在計算機科學中,鏈表作為一種基礎的數據結構可以用來生成其它類型的數據結構。
鏈表通常由一連串節點組成,每個節點包含任意的實例數據(data
fields)和一或兩個用來指向明上一個/或下一個節點的位置的鏈接("links")。鏈表最明顯的好處就是,常規數組排列關聯項目的方式可能不同於這些數據項目在記憶體或磁碟上順序,數據的存取往往要在不同的排列順序中轉換。而鏈表是一種自我指示數據類型,因為它包含指向另一個相同類型的數據的指針(鏈接)。鏈表允許插入和移除表上任意位置上的節點,但是不允許隨機存取。
鏈表有很多種不同的類型:單向鏈表,雙向鏈表以及循環鏈表。鏈表可以在多種編程語言中實現。像Lisp和Scheme這樣的語言的內建數據類型中就包含了鏈表的存取和操作。程序語言或面向對象語言,如C,C++和Java依靠易變工具來生成鏈表。
㈤ 線性存儲與鏈式存儲的區別
線性存儲方法是把邏輯上相鄰的元素存儲在物理位置相鄰的存儲單元中,由此得到的存儲表示稱為線性存儲結構。線性存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
鏈式存儲方法對邏輯上相鄰的元素不要求其物理位置相鄰,元素間的邏輯關系通過附設的指針欄位來表示,由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現
㈥ 線性順序存儲結構和鏈式存儲結構有什麼區別
區別:
1、順序存儲需要開辟一個定長的空間,讀寫速度快,缺點不可擴充容量(如果要擴充需要開辟一個新的足夠大的空間把原來的數據重寫進去)。
2、鏈式存儲無需擔心容量問題,讀寫速度相對慢些,由於要存儲下一個數據的地址所以需要的存儲空間比順序存儲大。
㈦ 線性表鏈式存儲結構的優點和缺點有什麼
一、線性表鏈式存儲結構的優點:
1、均勻性:雖然不同數據表的數據元素可以是各種各樣的,但對於同一線性表的各數據元素必定具有相同的數據類型和長度。對於線性鏈表,可以從頭指針開始,沿各結點的指針掃描到鏈表中的所有結點。
2、有序性:各數據元素在線性表中的位置只取決於它們的序號,數據元素之前的相對位置是線性的,即存在唯一的第一個和最後一個的數據元素,除了第一個和最後一個外,其它元素前面均只有一個數據元素(直接前驅)和後面均只有一個數據元素(直接後繼)。
二、線性表鏈式存儲結構的缺點:
線性表鏈式存儲結構不要求邏輯上相鄰的元素在物理位置上是相鄰,因此,它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點。
(7)數據線型鏈式存儲擴展閱讀:
線性表鏈式存儲結構的其他介紹:
一般在計算機的硬碟中,文件都是鏈式存儲的。我們知道,多個扇區組成一個簇,簇是計算機存儲數據的基本單位。
而一個文件是存儲在多個在空間上也許並不相連的簇中的,這就是鏈式存儲。但是為了能夠讀取出這個文件,計算機會在該文件第一部分的尾部寫上第二部分所在的簇號。
另一部分的尾部又寫上第三部分,以此類推,最後一部分寫上一段代碼,表示這是該文件的最後一部分。值得一提的是,高簇號在後。(如代碼所示的1234實為簇3412)文件所佔簇可認為是隨機分配的。
㈧ 線性鏈表的各數據結點的存儲順序與邏輯順序可以不一致,它們的存儲空間也可以不一致。這句話哪裡錯了,求
線性鏈表中各數據結點的邏輯順序與存儲順序肯定可以不一致,一致的是順序存儲,不是鏈式存儲,因此前半句正確
至於各結點的存儲空間大小自然需要一致,畢竟鏈表中的各元素都是同類的,結點的數據域也是一致的,因此存儲空間大小也一致
是否題目寫掉了空間大小
㈨ 線性鏈表是干什麼用的呀是數據里的邏輯結構還是存儲結構我怎麼老覺得線性結構是一種存儲方式呢......
是存儲結構線性鏈表是具有鏈接存儲結構的線性表,它用一組地址任意的存儲單元存放線性表中的數據元素,邏輯上相鄰的元素在物理上不要求也相鄰,不能隨機存取。
㈩ 數據結構:線性表的鏈式存儲(要求如下)跪求指教
這樣的態度....悲哀