非線性存儲結構
㈠ 鏈式存儲結構屬於線性結構還是非線性的存儲結構
鏈表是線性表的鏈式存儲結構
線性表的鏈式存儲表示的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。因此,為了表示每個數據元素與其直接後繼數據元素
之間的邏輯關系,對數據元素來說,除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息(即直接後繼的存儲位置)。由這兩部分信息組成一個「結點」,表示線性表中一個數據元素
。
鏈表(Linked
list)是一種常見的基礎數據結構,是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點里存到下一個節點的指針(Pointer)。由於不必按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表:順序錶快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而順序表相應的時間復雜度分別是O(logn)和O(1)。
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由於增加了結點的指針域,空間開銷比較大。在計算機科學中,鏈表作為一種基礎的數據結構可以用來生成其它類型的數據結構。
鏈表通常由一連串節點組成,每個節點包含任意的實例數據(data
fields)和一或兩個用來指向明上一個/或下一個節點的位置的鏈接("links")。鏈表最明顯的好處就是,常規數組排列關聯項目的方式可能不同於這些數據項目在記憶體或磁碟上順序,數據的存取往往要在不同的排列順序中轉換。而鏈表是一種自我指示數據類型,因為它包含指向另一個相同類型的數據的指針(鏈接)。鏈表允許插入和移除表上任意位置上的節點,但是不允許隨機存取。
鏈表有很多種不同的類型:單向鏈表,雙向鏈表以及循環鏈表。鏈表可以在多種編程語言中實現。像Lisp和Scheme這樣的語言的內建數據類型中就包含了鏈表的存取和操作。程序語言或面向對象語言,如C,C++和Java依靠易變工具來生成鏈表。
㈡ 什麼是線性結構,什麼是非線性結構
線性結構是一個有序數據元素的集合。常用的線性檔弊慎結構有:線性表,棧,隊列,雙隊列,數組,串。
非線性結構,數學用語,其邏輯特徵是一個結點元素可能有多個直接前趨和多個直接後繼。常見的非線性結構有:二維數組,多維數組,廣義表,樹(二叉樹等)。
傳統文本(例如書籍中的文章和計算機的文本文件)都是線性結構,閱讀是需要注意順序閱讀,而超文本則是一個非線性結構。在製作文本時,可將寫作素材按內部聯系劃分成不同關系的單元,然後用製作工具將其組成一個網型結構。閱讀時,不必按線性方式順序往下讀行敬,而是有選擇的閱讀自己感興趣的部分。
在超文本文件中,可以用一些單詞,短語或圖像作為連接點。這些連接點通常同其他顏色顯示或加下劃線來區分,這些形式的文件就成為超文本文件。通過非線性結構,可能實現頁面任意跳轉。
有一個以上根卜態結點的數據結構一定是非線性結構。
拓展資料
線性結構特徵:
1、集合中必存在唯一的一個「第一個元素」;
2、集合中必存在唯一的一個」最後的元素「;
3、除最後元素之外,其它數據元素均有唯一的」後繼「;
4、除第一元素之外,其它數據元素均有唯一的」前驅「。
數據結構中線性結構指的是數據元素之間存在著「一對一」的線性關系的數據結構。
如(a0,a1,a2,.....,an),a0為第一個元素,an為最後一個元素,此集合即為一個線性結構的集合。
相對應於線性結構,非線性結構的邏輯特徵是一個結點元素可能對應多個直接前驅和多個後繼。