❶ 線性結構和非線性結構數據結構
線性結構和非線性結構
線性結構
l 線性結構作為最常用的數據結構.其特點是數據元素之間存在一對一的線性關系 。
2 線性結構有兩種不同的存儲結構,即順序存儲結構(數組)和鏈式存儲結構(鏈表) . 順序存儲的線性表稱為順序表,順序表中的存儲元素是連續的。
3 鏈式存儲的線性表稱為鏈表,鏈表中的存儲元素不一定是連續的.元素節點中存放數據元素以及相鄰元素的地址信息。
4 線性結構常見的有:數組、隊列、鏈表和棧,後面我們會詳細講解。
非線性結構
二維數組,多維數組,廣義表,樹結構,圖結構
❷ 二叉樹是非線性數據結構,所以
二叉樹是非線性數據結構,所以(C、它能採用順序存儲結構和鏈式存儲結構存儲)。
一般而言,完全二叉樹(包括滿二叉樹)使用順序存儲,普通二叉樹一般用二叉鏈表或者三叉鏈表存儲。
二叉樹是n個有限元素的集合,該集合或者為空、或者由一個稱為根的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成,是有序樹。當集合為空時,稱該二叉樹為空二叉樹。在二叉樹中,一個元素也稱作一個結點。
(2)非線性的數據結構用什麼存儲擴展閱讀:
若對一棵有n個節點的完全二叉樹進行順序編號(1≤i≤n),那麼,對於編號為i(i≥1)的節點:
當i=1時,該節點為根,它無雙親節點。
當i>1時,該節點的雙親節點的編號為i/2。
若2i≤n,則有編號為2i的左節點,否則沒有左節點 。
若2i+1≤n,則有編號為2i+1的右節點,否則沒有右節點。
❸ 堆(heap)和棧(Stack)的區別是什麼為什麼平時都把堆棧放在一起講
將堆跟棧放在一起將是因為兩者都是存儲數據的方式。區別如下:
一、主體不棗扮同
1、堆:是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵完全二叉樹的數組對象。
2、棧:又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。
二、特點不同
1、堆:堆中某個節點的值總是不大於或不小於其父節點的值;堆總是一棵完全二叉樹。
2、棧:是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂。
三、作用不同
1、堆:堆是非線性數據結構,相當於一維數組,有兩個直接後繼。
2、棧:可以用來在函數調用的時候存儲斷點,做遞歸時要用到棧。
❹ 計算機有哪些存儲結構
在計算機中存儲和組織數據的方式被稱之為數據結構,鏈表和數組是較為常見的兩種結構。
1、數組
數組就像一個個緊挨著的小格子,每一個格子都有它們自己的序號,這個序號被稱之為「索引」。與生活中不太相同的是,平時計數習慣以「1」開始,而在計算機中,「0」是開頭的第一個數字。
數組中的數據,在計算機的存儲器中,也是按順序存儲在連續的位置中。當我們尋找需要的數據時,通過格子中的索引,便可以找到數據。
2、鏈表
鏈表的存儲方式有些像地址和住宅的關系,地址可以寫在一張紙上,但是這並不代表住宅也緊密相鄰。鏈表中的數據在計算機中也是分散地存儲在各個地方,但是鏈表裡面除了存儲數據,還存儲了下一個數據的地址,以便於找到下一個數據。
與數組不同的是,鏈表儲存數據不像數組一樣,需要提前設定大小,就像火車的車廂長度是隨著乘客的數量而增加的。
(4)非線性的數據結構用什麼存儲擴展閱讀
數據的鏈式存儲結構可用鏈接表來表示。
其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點(以後簡稱為後繼結點或前驅結點)的存儲位置。
通過結點的指針域(又稱為鏈域)可以訪問到對應的後繼結點或前驅結點,若一個結點中的某個指針域不需要指向其他結點,則令它的值為空(NULL)。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中。
由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。