1. 程式人生 > >數據結構基礎理解

數據結構基礎理解

鏈式 空間 樹形結構 邏輯關系 不存在 線性表 相關數 無需 技術

數據結構只是靜態的描述數據元素之間的關系,高效的程序需要在數據結構的基礎上設計和選擇算法。

算法與數據結構的區別:

1,算法是為了解決實際問題而設計

2,數據結構是算法需要處理的問題載體。

3,數據結構與算法相輔相成

算法具體五個基本特性:輸入,輸出,有窮性,確定性和可行性

數據結構分類,按照視點不同,通常分為邏輯結構,和物理結構

邏輯結構:

1,集合結構,類似於數學中的集合,各個數據元素是平等,或者沒有其它關系

技術分享

2,線性結構,元素之間是一對一的關系,

技術分享

3,樹形結構,是元素之間存在一對多的層次關系

技術分享

4,圖形結構,元素關系是多對多

技術分享

物理結構:

1,順序存儲,把數據元素存放在連續的地址存儲單元

技術分享

2,鏈式存儲,是把元素存在任意的存儲單元,這些單元可以是連續的,也可以是不連續的,需要用一個指針存放元素地址,通過地址找到相關數據的位置。

技術分享

線性表與受限線性表

線性表

特點是節點之間滿足線性關系,如動態數組,鏈表,棧,隊列都屬於線性結構,數據元素之間是有順序的,數據元素個數是有限的,數據元素的類型必須相同

1,線性表的順序存儲

優點:無需為線性表中的邏輯關系增加額外空間,可以快速的獲取表中合法位置的元素。

缺點:插入和刪除操作需要移動大量元素。

2,線性表的鏈式存儲

優點:無需一次性定制鏈表的容量,插入和刪除數據無需移動數據元素。

缺點:數據元素必須保存後繼元素的位置信息,獲取指定數據的元素操作需要順序訪問之間的元素。

受限線性表

1,棧(stack),是一種特殊線性表,在於限制了這個線性表的插入和刪除位置,它始終在棧頂進行,棧底是固定的,最先進棧的只能在棧底。

技術分享

2,隊列(Queue),只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

技術分享

樹和二叉樹

由一個或多個(n>=0)結點組成的有限集合T,有且僅有一個結點稱為根(root),當n>1時,其余的結點分為m(m>=0)個互不相交的有限集合T1,T2....Tm,每個集合本身又是棵樹,被稱為根的子樹。

技術分享

樹的特點:

1,非線性結構,有一個直接前驅,但可能有多個直接後繼

2,樹的定義具有遞歸性,樹中還有樹。

3,樹可以為空,即節點個數為0.

二叉樹基本概念:

邏輯結構是一對二(1:2),每個結點最多只有兩棵子樹(不存在大於2的結點),左子樹和右子樹次序不能顛倒(有序樹)。

技術分享

滿二叉樹,即一棵深度為K 且有2k - 1個結點的二叉樹,每層都充滿了結點:

技術分享

完全二叉樹,即每一層上的節點樹均達到最大值,在最後一層上只缺少右邊的若幹結點。

技術分享

數據結構基礎理解