大話資料結構精要提取

2021-06-22 20:31:39 字數 2385 閱讀 9273

一、.資料結構分為資料結構和物理結構

1.1邏輯結構:是指資料物件中資料元素之間的相互關係

邏輯結構包括:集合結構、線性結構、樹形結構、圖形結構

1.2物理結構:是指資料邏輯結構在計算機中的儲存形式

物理結構包括:順序儲存結構、鏈式儲存結構

1.2.1 順序儲存結構:是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是是一致的。

1.2.2 鏈式儲存結構:是把資料存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。

二、資料結構和演算法的關係以及演算法的相關結構

2.1 資料結構是思想上的抽象,而演算法是資料結構的實現,演算法可以讓程式變得更快速、優雅。更可以把資料結構的思想真正的變成程式

2.2 演算法的特性:輸入輸出、有窮性、確定性、可行性。

2.3 演算法設計的要求:正確性、可讀、健壯、時間效率高、儲存量低

2.4 演算法效率的度量單位:事後統計法、事前分析估算法

2.5 演算法時間複雜度

2.5.1 推導大o階方法

用常數1取代執行時間中的所有加法常數

在修改執行次數的函式中,只保留最高項

最高項去除相乘的常數

2.6 演算法的空間複雜度

演算法的空間複雜度通過計算演算法所需的儲存空間實現

三、線性表

3.1 線性表定義:零個或多個資料元素的有限序列

3.2 線性表的順序儲存結構

3.2.1 順序儲存結構是指:用一段位址連續的儲存單元依次儲存線性表中的資料元素

3.2.2 順序儲存結構的插入和刪除

獲取元素:根據陣列下標時間複雜度為o(1)

插入元素:表長度加一,從要插入元素的位置之後的元素向後移動一位  時間複雜度為o(n)

刪除元素:刪除元素,所有後面的元素向前移一位,表長減一

優點     :無需為表示表中元素之間的邏輯關係而增加額外的儲存空間可以快速獲取表中任意位置的元素

缺點:插入刪除需要移動大量元素線性表變化較大時,難以確定線性表的容量造成儲存空間的「碎片」

3.3 線性表的鏈式儲存結構

3.3.1 前乙個結點的指標域指向後乙個結點的位址

3.3.2 單鏈表的獲取

獲取元素:從頭開始遍歷整個線性表,直到找到元素未知

刪除元素:將前一節點的指標域指向後繼節點的指標域

3.3.3 單鏈表的整表建立

3.3.4 單鏈表的整表刪除

3.4單鏈表與順序儲存結構的優缺點

3.5  靜態鍊錶   用陣列的方式描述鍊錶,已解決高階語言沒有c語言的指標的概念

3.6迴圈鍊錶   頭尾相連

3.7雙向鍊錶   在原有的後繼指標的基礎上新增前驅指標,指向前乙個結點

4.棧和佇列

4.1棧

4.1.1棧的定義 棧是限定在表尾進行插入和刪除操作的線性表 lifo

4.1.2棧的順序儲存結構棧底作為陣列的0索引

4.1.3棧的鏈式儲存結構

4.1.4棧的應用

4.1.4.1遞迴 把乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式

4.1.4.2四則運算表示式求值算數優先順序等的計算~~

4.2佇列

4.2.1佇列的定義只允許在一端進行插入操作,而在另一端進行刪除操作的線性表fifo

4.2.2佇列的順序儲存結構迴圈佇列,佇列尾部滿了,從頭部重新進行新增,只需要標識哪個是頭

4.2.3佇列的鏈式儲存結構同線性表的插入刪除

5串5.1匹配模式演算法

5.1.1樸素的匹配模式演算法

演算法詳情---------------------------

5.1.2kmp模式匹配演算法

演算法詳情---------------------------

6樹6.1樹的定義 n個節點的有限集

6.2二叉樹的定義 n個節點的有限集,由乙個根節點和兩棵互不相交的,分別被稱為根節點的左子樹和右子樹的二叉樹組成

6.3二叉樹的儲存結構

6.3.1順序儲存結構按照層級來存

6.3.2鏈式儲存結構

6.4遍歷二叉樹

6.4.1前序遍歷

6.4.2中序遍歷

6.4.3後序遍歷

6.4.4層序遍歷

6.5樹、森林與二叉樹的轉換

6.5.1樹轉換成二叉樹

6.5.1.1 加線所有兄弟結點之間加一條線

6.5.1.2 去線對樹中每個結點只保留第乙個孩子結點的連線

6.5.1.3 層次調整以樹的根結點為軸心,順時針旋轉到一定的角度,使之層次分明

6.5.2森林轉換成二叉樹

6.5.2.1 把每個樹轉換成二叉樹

6.5.2.2 第一顆二叉樹不動,從第二棵二叉樹開始,依次把後一顆二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連起來

6.5.3二叉樹轉換為樹

《大話資料結構》

函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...

《大話資料結構》

常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...

《大話資料結構》

線性表 線性表,從某種就能感覺到,是具有像線一樣的性質的表。在廣場上,有很多人分散在各處,當中有些是小朋友,可也有很多大人,甚至還有不少寵物,這些小朋友的資料對整個廣場人群來說,不能算是線性表的結果。但像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友,每乙...