数据结构c语言版谭浩强pdf,谭浩强C语言_数据结构.pdf
IT Education 數(shù)據(jù)域 int next 后繼域 Node t PNode t 提供的操作有 初始化 插入 刪除等 IT Education 數(shù)據(jù)域 Node t next 后繼域 Node t PNode t 提供的操作有 初始化 插入 刪除等 數(shù)據(jù)1 后繼 數(shù)據(jù)2 后繼 數(shù)據(jù)3 后繼 數(shù)據(jù)n 1 后繼 數(shù)據(jù)n end IT Education struct Node Next typedef struct Node Node t IT Education a next a next next dispose p IT Education s data x s next a next a next s heada0a1 an 1 xs a heada0a1 an 1 x b IT Education struct DuLNode prior struct DuLNode next DuLNode DuLinkList priorelement next L空雙向循環(huán)鏈表 非空雙向循環(huán)鏈表 LAB bca p p prior next p p next proir IT Education 出隊(duì)列 x sq front rear rear front rear 1 2 3 4 5 0 J1 J2 J3出隊(duì) J1 J2 J3 front front front IT Education 0 M 1 1 front rear 實(shí)現(xiàn) 利用 模 運(yùn)算 入隊(duì) rear rear 1 M sq rear x 出隊(duì) front front 1 M x sq front 隊(duì)滿 隊(duì)空判定條件 IT Education 隊(duì)列滿 Q base Q rear e 新元素存放到隊(duì)尾 Q rear Q rear 1 MAXQSIZE 修改隊(duì)為指示器 return OK 0 1 0 1 C 0 1 7 2 7 2 7 2C 6 3 6 3 6 3 5 4 5 4 5 4 A B A B D D E F E G 圖3 13 循環(huán)隊(duì)列上的插入 Q rearQ rear Q rear Q front Q front Q front 滿隊(duì)列 空隊(duì)列 IT Education 隊(duì)列空 e Q base Q front 刪除當(dāng)前隊(duì)頭元素 Q front Q front 1 MAXQSIZE 修改隊(duì)頭指示器 returnOK G A B C C D G D F E F E 圖3 14 循環(huán)隊(duì)列的刪除過程 Q rear Q rear Q rear Q front 1 滿 2 刪除A B后的隊(duì)列 3 刪除最后一個(gè)元素空隊(duì)列 Q front Q front IT Education struct Qnode next Qnode QueuePtr 頭結(jié)點(diǎn) front 隊(duì)頭隊(duì)尾 rear 設(shè)隊(duì)首 隊(duì)尾指針front和rear front指向頭結(jié)點(diǎn) rear指向隊(duì)尾 typedef struct QueuePtr front QueuePtr rear LinkQueue IT Education int x for i 1 i n i for j 0 ja j 1 進(jìn)行交換 x a j a j a j 1 a j 1 x IT Education int x for i 1 i n i 進(jìn)行n 1次選擇和交換 k i 1 for j i j n j if a j a k k j x a i 1 a i 1 a k a k x IT Education 定義并初始化區(qū)間下界和上界變量 int mid 定義保存中點(diǎn)元素下標(biāo)的變量 while low high mid low high 2 if x a mid return mid else if xr 2 key 則交換 然 后比較第二個(gè)記錄與第三個(gè)記錄 依次類推 直 至第n 1個(gè)記錄和第n個(gè)記錄比較為止 第一趟 冒泡排序 結(jié)果關(guān)鍵字最大的記錄被安置在最后 一個(gè)記錄上 對(duì)前n 1個(gè)記錄進(jìn)行第二趟冒泡排序 結(jié)果使關(guān) 鍵字次大的記錄被安置在第n 1個(gè)記錄位置 重復(fù)上述過程 直到 在一趟排序過程中沒有進(jìn) 行過交換記錄的操作 為止 IT Education TrainingDate 20 December 2012 例 49 38 65 97 76 13 27 30 初始關(guān)鍵字 38 49 65 76 13 27 30 97 第一趟 38 49 65 13 27 30 76 第二趟 38 49 13 27 30 65 第三趟 38 13 27 30 49 第四趟 13 27 30 38 第五趟 13 27 30 第六趟 38 49 76 9713 9727 9730 97 13 76 76 7627 30 13 6527 6530 65 13 13 49 4930 4927 3827 3830 38 IT Education TrainingDate 20 December 2012 算法描述 算法評(píng)價(jià) 時(shí)間復(fù)雜度 最好情況 正序 比較次數(shù) n 1 移動(dòng)次數(shù) 0 最壞情況 逆序 比較次數(shù) 2 1 2 1 1 nnin n i 移動(dòng)次數(shù) 2 3 3 2 1 nnin n i T n O n 空間復(fù)雜度 S n O 1 Ch8 4 txt Ch8 4 c IT Education TrainingDate 20 December 2012 快速排序 基本思想 通過一趟排序 將待排序記錄分割成獨(dú) 立的兩部分 其中一部分記錄的關(guān)鍵字均比另一部 分記錄的關(guān)鍵字小 則可分別對(duì)這兩部分記錄進(jìn)行 排序 以達(dá)到整個(gè)序列有序 排序過程 對(duì)r s t 中記錄進(jìn)行一趟快速排序 附設(shè)兩個(gè)指針i和j 設(shè)樞軸記錄rp r s x rp key 初始時(shí)令i s j t 首先從j所指位置向前搜索第一個(gè)關(guān)鍵字小于x的 記錄 并和rp交換 再從i所指位置起向后搜索 找到第一個(gè)關(guān)鍵字大 于x的記錄 和rp交換 重復(fù)上述兩步 直至i j為止 再分別對(duì)兩個(gè)子序列進(jìn)行快速排序 直到每個(gè)子 序列只含有一個(gè)記錄為止 IT Education TrainingDate 20 December 2012 例 初始關(guān)鍵字 4938 65 97 76 13 27 50 ij x ji 完成一趟排序 27 38 13 49 76 97 65 50 分別進(jìn)行快速排序 13 27 38 49 50 65 76 97 快速排序結(jié)束 1327 38 49506576 97 4927 i ji j ij 4965 j i 1349 i j 4997 ij IT Education TrainingDate 20 December 2012 選擇排序 簡(jiǎn)單選擇排序 排序過程 首先通過n 1次關(guān)鍵字比較 從n個(gè)記錄中找出關(guān) 鍵字最小的記錄 將它與第一個(gè)記錄交換 再通過n 2次比較 從剩余的n 1個(gè)記錄中找出關(guān) 鍵字次小的記錄 將它與第二個(gè)記錄交換 重復(fù)上述操作 共進(jìn)行n 1趟排序后 排序結(jié)束 IT Education TrainingDate 20 December 2012 例初始 49 38 65 97 76 13 27 k jjjjjj kk i 1 13 49 一趟 13 38 65 97 76 49 27 i 2 kk jjjjj 2738 二趟 1327 65 97 76 49 38 三趟 132738 97 76 49 65 四趟 13273849 76 97 65 五趟 1327384965 97 76 六趟 132738496576 97 排序結(jié)束 13273849657697 Ch8 6 txt IT Education TrainingDate 20 December 2012 堆排序 堆的定義 n個(gè)元素的序列 k1 k2 kn 當(dāng)且僅當(dāng)滿足下列 關(guān)系時(shí) 稱之為堆 或 i 1 2 n 2 ki k2i ki k2i 1 ki k2i ki k2i 1 例 96 83 27 38 11 9 例 13 38 27 50 76 65 49 97 96 27 91138 83 13 2738 49657650 97 可將堆序列看成完全二叉樹 則堆頂 元素 完全二叉樹的根 必為序列中 n個(gè)元素的最小值或最大值 IT Education TrainingDate 20 December 2012 堆排序 將無序序列建成一個(gè)堆 得到關(guān)鍵字最小 或最大 的記錄 輸出堆頂?shù)淖钚?大 值后 使剩余的n 1個(gè)元素重又建成一個(gè)堆 則可得到n個(gè) 元素的次小值 重復(fù)執(zhí)行 得到一個(gè)有序序列 這 個(gè)過程叫 堆排序需解決的兩個(gè)問題 如何由一個(gè)無序序列建成一個(gè)堆 如何在輸出堆頂元素之后 調(diào)整剩余元素 使之 成為一個(gè)新的堆 第二個(gè)問題解決方法 篩選 方法 輸出堆頂元素之后 以堆中最后一個(gè)元素 替代之 然后將根結(jié)點(diǎn)值與左 右子樹的根結(jié)點(diǎn) 值進(jìn)行比較 并與其中小者進(jìn)行交換 重復(fù)上述 操作 直至葉子結(jié)點(diǎn) 將得到新的堆 稱這個(gè)從 堆頂至葉子的調(diào)整過程為 篩選 IT Education TrainingDate 20 December 2012 例 13 2738 49657650 97 97 2738 49657650 13 輸出 13 27 4938 97657650 13 輸出 13 97 4938 27657650 13 輸出 13 27 38 4950 27657697 13 輸出 13 27 65 4950 27387697 13 輸出 13 27 38 IT Education TrainingDate 20 December 2012 49 6550 27387697 13 輸出 13 27 38 76 6550 27384997 13 輸出 13 27 38 49 50 6576 27384997 13 輸出 13 27 38 49 97 6576 27384950 13 輸出 13 27 38 49 50 65 9776 27384950 13 輸出 13 27 38 49 50 97 6576 27384950 13 輸出 13 27 38 49 50 65 IT Education TrainingDate 20 December 2012 76 6597 27384950 13 輸出 13 27 38 49 50 65 97 6576 27384950 13 輸出 13 27 38 49 50 65 76 97 6576 27384950 13 輸出 13 27 38 49 50 65 76 97 IT Education TrainingDate 20 December 2012 第二部分 問題與習(xí) 題 IT Education TrainingDate 20 December 2012 問題 Q1 為了描述并解決先進(jìn)先出特征的問題 我們一般會(huì)采用考慮以下 哪種數(shù)據(jù)結(jié)構(gòu) A 隊(duì)列B 棧C 樹D 二叉樹 Q2 為了描述并解決先進(jìn)后出特征的問題 我們一般會(huì)采用考慮以下 哪種數(shù)據(jù)結(jié)構(gòu) A 隊(duì)列B 棧C 樹D 二叉樹 Q3 對(duì)線性表進(jìn)行二分法查找 其前提條件是 A 線性表以順序方式存儲(chǔ) 并且按關(guān)鍵碼值排好序 B 線性表以順序方式存儲(chǔ) 并且按關(guān)鍵碼值的檢索頻率排好序 C 線性表以鏈接方式存儲(chǔ) 并且按關(guān)鍵碼值排好序 D 線性表以鏈接方式存儲(chǔ) 并且按關(guān)鍵碼值的檢索頻率排好序
展開閱讀全文
總結(jié)
以上是生活随笔為你收集整理的数据结构c语言版谭浩强pdf,谭浩强C语言_数据结构.pdf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL索引key_len
- 下一篇: RSTP接口角色