數據結構基礎理解
數據結構只是靜態的描述數據元素之間的關系,高效的程序需要在數據結構的基礎上設計和選擇算法。
算法與數據結構的區別:
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個結點的二叉樹,每層都充滿了結點:
完全二叉樹,即每一層上的節點樹均達到最大值,在最後一層上只缺少右邊的若幹結點。
數據結構基礎理解