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