期末數據結構復習一點筆記

      網友投稿 896 2022-05-30

      選擇 2*10 填空 1*20 主要形式為概念題和計算題 算法應用題 二叉樹序遍歷、哈夫曼樹、最短路、最小生成樹、拓撲序、關鍵路徑 畫圖解決問題+概述算法思路+復雜度分析 程序填空題 二叉樹序遍歷、拓撲排序、堆排序 暫未包含: 程序閱讀&程序設計

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      數據,對客觀事物的符號表示,圖像聲音等。

      數據元素是數據的基本單位,如學生記錄。

      數據項是不可分割的最小單位,如姓名學號。

      數據對象是具有相同性質的數據元素的集合。

      數據結構是互相之間存在關系的數據元素的集合。數據結構={D、R}構成。

      數據結構三要素:邏輯結構、存儲結構、數據運算 (羅村樹)

      邏輯結構分4類:線性,樹,圖,集合。

      邏輯結構包括線性(線性表、棧、隊列)和非線性(樹、圖、集合)結構。線性結構的特點:所有成員處于一個序列,有且僅有一個直接前驅和后繼。

      存儲結構包括順序、鏈式、索引、散列存儲。 (順聯鎖傘)

      算法的五個特征:有窮性、確定性、可行性、輸入、輸出 (有缺課出入)

      線性表

      按照存儲結構的不同,分為順序存儲和鏈式存儲分為2類。 1、順序表(vector) 定義:由相同類型的數據元素構成。 每個元素有且僅有一個前驅和后繼。 特點:由一組地址連續的存儲單元依次存儲。 2、鏈表 單鏈表:一個指針指向后繼節點。 雙鏈表:兩個指針指向前驅和后繼節點。 循環鏈表:沒有指向null,判空條件為next指針等于頭指針。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      期末數據結構復習的一點筆記

      12

      棧和隊列

      操作受限的線性表 1、棧 后進先出,可以順序和鏈式存儲。 共享棧,即對頂棧。 2、隊列 先進先出,可以順序和鏈式存儲。 循環隊列:fr==ed

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      有多個字符組成的有限序列。 串是一種特殊的線性表,特殊性體現在數據元素可以是字符。 1、模式匹配算法: 簡單匹配,求子串在主串中的位置 改進匹配:KMP算法及優化 2、矩陣的壓縮存儲: 對稱矩陣,上下三角矩陣等 對稱矩陣,下三角放入一位數組 B[n(n+1)/2]中,Aij對應i(i-1)/2+j-1或者代換aij=aji 上三角矩陣(含常量c),n(n+1)/2+1。aij=(n+n-i+2)(i-1)/2+(j-i)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      樹的基本概念(選擇題)

      節點的度:節點的孩子個數。 樹的度:樹中節點的最大度數。

      樹中節點數 = 總度數+1。(重要)

      總度數 = 邊數的2倍。 (重要)

      樹的深度是從上往下的,高度是從下往上的,值都一樣。

      度為m的樹中,第i層上最多有m^i-1個節點。

      高度為h的m叉樹中,最多有(m^h-1)/(m-1)個節點

      有序樹左右節點無法互換。

      二叉樹概念(選擇題):

      父節點編號為i/2。

      葉子節點個數 = 度為2的節點數+1,即n0=n2+1。

      證明, 因為n = n1+2*n2+1, 且n=n0+n1+n2。

      第k層有2^k-1個節點。

      存儲方式

      順序存儲:構造成完全二叉樹,用0填空,層次存入數組。

      鏈式存儲:指向左右孩子指針。

      遍歷:先序,中序,后序,層次(大題)

      樹轉二叉樹:在兄弟節點間加跟線,根節點只保留第一個孩子的連線。

      森林轉二叉樹,每棵樹都先轉二叉樹,然后兄弟節點連線,保留第一跟,順時針轉45度。

      幾種特殊的樹(大題)

      二叉排序樹,左子樹<根節點<右子樹。

      中序遍歷為從小到大排序。

      哈夫曼樹

      節點帶權路徑長度,為任意結點到根的總和。

      樹的帶權路徑長度,為所有葉節點的帶權路徑長度之和。

      圖的基本概念(選擇題)

      無向完全圖邊數 = n*(n-1)/2, 有向圖不需要除2。有向帶權圖又稱為網。

      度數總和 = 邊數的兩倍。

      存儲結構

      鄰接矩陣, 鄰接表,十字鏈表,鄰接多重表。判斷條件。

      圖的遍歷

      DFS,BFS,求遍歷序列。 一次dfs,連通圖。

      圖的應用(大題)

      最小生成樹

      Prim:去掉所有的邊,任選一個頂點。選點(與當前點集最近,不構成回路)。重復直到聯通即可。

      Kruskal:去掉所有的邊。 選邊(邊權最小,不構成回路)。重復直到圖聯通。

      最短路

      Dijkstra:將點集分為在最短路中的和不在的。每次去不在的中找距離最近的加入最短路加入最短路,并用其去松弛其余邊。

      拓撲排序

      AOV網,頂點表示活動,邊表示活動順序。

      每次從AOV網中選擇一個沒有前驅的頂點輸出,并刪除該頂點和所有以它為起點的有向邊。

      關鍵路徑

      AOE網,頂點表示事件,有向邊表示活動,邊上權值表示活動開銷。

      關鍵路徑:從開始點到結束點的所有路徑中,具有最大路徑長度的路徑。關鍵活動為關鍵路徑上的活動,即有向邊。

      事件vk的最早發生時間為最大前驅。 ve(k) = MAX{ve(j)+weight(vj,vk)};,vj為前驅。

      事件vk的最遲發生時間為最小前驅。vl(k) = MIN{vl(j)-weight(vj,vk)};,vj為前驅。

      活動的最早開始時間e(i) = 為起點的最早發生時間

      活動的最晚開始時間l(i) = 終點的最遲發生事件 — 活動所需時間。

      求關鍵路徑:求出所有點的最早開始時間和最晚發生時間。再求出所有活動的最早和最晚發生時間。 額差d()=l()-e()。 d()=0的為關鍵路徑。

      查找的考點

      查找

      查找表(查找結構):用于查找的數據集合。

      關鍵字:數據元素中某個數據項的值,可以標識一個數據元素。主關鍵字可以唯一標識。

      平均查找長度:所有查找過程中進行關鍵字比較次數的平均值。 A S L = ∑ i = 1 n P i C i ASL=\sum_{i=1}^nP_iC_i ASL=∑i=1n Pi Ci

      Pi為查找第i個元素的概率(一般每個元素都相等,即1/n),Ci為找到第i個元素需要的比較次數。

      順序查找的平均查找長度為 :成功 = ∑ i = 1 n 1 n ( n ? i + 1 ) = n + 1 2 \sum_{i=1}^n\frac{1}{n}(n-i+1) = \frac{n+1}{2} ∑i=1n n1 (n?i+1)=2n+1 , 失敗 = n+1。

      折半查找的平均查找長度為:成功 = n + 1 n l o g 2 ( n + 1 ) ? 1 \frac{n+1}{n}log_2(n+1)-1 nn+1 log2 (n+1)?1。

      折半查找比較次數,可以畫出判定樹,看路過幾個節點。

      散列表

      一種散列存儲方法。

      散列函數Hash(key) = Addr。把兩個不同關鍵詞映射到同一地址稱為同義詞。

      (1)直接定址法: H(key) = a*key+b。(2)除留余數法: H(key) = key%p。

      散列沖突的處理方法 & 構造散列表:(大題)

      (1)開放定址法:線性探測法di=0,1,2。平方探測法di=0^2,。再散列法di=hash2(key)

      查找不成功的平均查找長度 = 查找次數(1+13+12+。。2) / 散列后的地址個數(13)=7

      (2)拉鏈法: 存放到線性鏈表中。 ^符號表示后繼指針為空。

      散列表的查找長度取決于3個因素:散列函數,沖突處理方法,裝填因子。

      裝填因子a = 表中記錄數n / 散列表長度m。 a越大,記錄越滿,沖突可能性越大。

      排序的考點:

      排序的概念

      穩定性, 相對位置保持不變。

      內部排序:元素全部在內存中。基于比較和移動。外部排序需要外存。

      插入排序

      直接插入排序:假設已經排好序,插入即可。

      希爾排序:把相隔某個增量的記錄組成一個子表,對各個子表進行直接插入排序。整體基本有序后,整體直接插入。

      空間O(1),時間不確定,不穩定。一般初始是穩定的,優化后不穩定。

      e.g,取增量d=5,組成多個子表,各排一次。再取d=3,再排一次。最后取增量d=1,即整體插入排序。

      交換排序

      冒泡排序。優化后快速排序。

      選擇排序:

      簡單選擇排序。優化后堆排序。

      堆指的是:根節點比左右節點小或大的二叉樹。

      構造大根堆:默認序列是二叉樹。

      歸并排序

      基數排序(基于關鍵字的各位大小)

      先分配:先按照個位進行分類,構造鏈表。

      再收集:按照順序寫到一起。

      以此類推,操作十位和百位,最后就有序了。

      給生日排序,基數排序是比較快的。

      數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:走進Java接口測試之測試框架 TestNG 數據驅動(入門篇)
      下一篇:物聯網發展簡史與概述
      相關文章
      亚洲av日韩综合一区久热| 亚洲神级电影国语版| 亚洲成a人片77777群色| 亚洲AV无码久久| 综合久久久久久中文字幕亚洲国产国产综合一区首| 亚洲熟妇AV乱码在线观看| 亚洲av成人综合网| 亚洲视频一区在线播放| 亚洲五月激情综合图片区| 亚洲AV无码专区电影在线观看| 亚洲最大AV网站在线观看| 国产亚洲AV手机在线观看| 亚洲精品国产精品乱码不卡| 亚洲国产精品成人久久蜜臀| 亚洲VA综合VA国产产VA中| 亚洲精品乱码久久久久久不卡| 日韩精品亚洲专区在线影视| 在线视频亚洲一区| 亚洲国产天堂久久久久久| 亚洲爽爽一区二区三区| 国产亚洲色婷婷久久99精品91| 国产成人亚洲影院在线观看| 国产AV无码专区亚洲AV手机麻豆 | 亚洲成人影院在线观看| 亚洲AV日韩精品一区二区三区| avtt亚洲天堂| 亚洲欧洲自拍拍偷精品 美利坚| 亚洲国产成人久久综合区| 亚洲国产午夜中文字幕精品黄网站 | 亚洲男人天堂2018av| 亚洲精品国产suv一区88| 亚洲1区2区3区精华液| 国产亚洲综合精品一区二区三区| 最新亚洲人成无码网站| 亚洲精品一级无码中文字幕| 中文字幕日韩亚洲| 亚洲AV永久无码精品水牛影视| 久久亚洲AV成人无码国产| 亚洲香蕉在线观看| 亚洲jizzjizz少妇| 亚洲欧洲精品成人久久奇米网|