前言:2019考研,我考的專業課是數據結構(含C語言程序設計),在考研備考期間,初學數據結構,感覺也是很曲折。剛開始複習看着每道題只有關鍵代碼很頭疼,爲了保證自己的代碼有同樣的效果,不得不花很多時間去完善非重點部分的代碼來完整運行起來,暑假寫了挺多這種細枝末節的代碼,也記錄了一些放在我的Github上,不過沒有整理目錄,看着很亂,今天無意中看到了,所以特地抽出時間整理了一下目錄,希望對同樣備考的您有幫助,省下您一些寫程序框架的時間或者是給您一點啓發。備考匆忙,加上我是跨考,寫下的難免會有錯誤,希望大家發現了能給我指出,甚是感謝!如果您有時間,也可以對我的進行整理補充或者是開一個更專業的板塊,爲後面的學弟學妹們留點東西。
一、C
C的應用
- 不用棧實現單括號匹配
- 使用二級指針做矩陣加法
- 計算比賽前多少名的平均分
- 通過遞歸判斷給定序列是否是迴文序列
- 使用倒推法求解原始物體數目(猴子分桃問題)
- 求解一元一次方程
- 矩陣轉置
- 身份證校驗
- 漢諾塔
- 按某些規則計算前n項累加累乘的結果
- 歸併兩個非遞減數組保留重複項
- 求旋轉數組中最小值以及某個確定值位置
- 找升序序列的中位數
- 求兩遞增集合的交集
- 多種方法求最大子列和並輸出最大子列
- 八皇后問題
- 字符串—求全排列
- 字符串—空格替換
- 字符串—KMP算法
- 字符串—找單詞共同後綴串
位運算
- 位運算–判斷一個數是否是2的n次冪
- 位運算–判斷一個數的奇偶性
- 位運算–實現算數運算加減乘除
- 位運算–將整型數據按字節存入char型數組中
- 位運算–將無符號整型數轉換成十六進制存在char型數組中
- 位運算–找出數列中出現次數爲奇數的數
- 位運算–求一個數原碼對應的補碼
- 位運算–輸出長度爲n的二進制數中不包含101子串的總數目
二、數據結構
鏈表
PS.感覺放C那裏更和諧,爲了和後面銜接,放數據結構裏吧
- 單鏈表的基本操作
- 單鏈表插入排序
- 兩種不同的單鏈表逆序
- 雙向鏈表
- 雙向循環鏈表的基本操作
- 將兩個順序相反的鏈表歸併成一個有序鏈表
- 對鏈表中絕對值相同的節點去重
- 雙向循環鏈表非遞減排序
- 約瑟夫問題
- 魔術師發牌問題
- 十字鏈表存儲稀疏矩陣
棧
隊列
PS.這個做過的題不是很多
樹
- 靜態鏈式二叉樹的創建及各種遍歷方式
- 二叉樹層次遍歷
- 二叉樹非遞歸遍歷
- 動態創建二叉樹並遍歷輸出
- 動態輸入二叉樹並通過後序遍歷求深度
- 求二叉樹寬度
- 求二叉樹寬度2
- 線索化二叉樹
- 二叉排序樹
- 將數組中滿二叉樹的前序序列轉成後序序列
- 已知先序序列和中序序列還原二叉樹
- 根據給定的滿二叉樹序列構建二叉樹
- 已知前序中序或者是中序後序還原二叉樹完整版(遞歸+非遞歸)
- 判斷標準形式的二叉樹是否是堆
- 樹–尋找兩個節點最近的公共祖先
- 天勤第六章思考題1—輸出二叉樹根節點到每個葉子節點的路徑
- 天勤第六章綜合應用題1.10—對二叉樹進行所謂的雙序遍歷
- 天勤第六章綜合應用題1.11—設計中序線索二叉樹並找某些節點的信息
- 天勤第六章綜合應用題1.2—計算節點數
- 天勤第六章綜合應用題1.3—計算葉子節點數
- 天勤第六章綜合應用題1.4—藉助樹的右指針域將樹的葉子節點串成鏈表
- 天勤第六章綜合應用題1.5—輸出帶雙親域的樹的所有節點到根節點的路徑
- 天勤第六章綜合應用題1.7—求二叉樹中某個數所在的層
- 天勤第六章綜合應用題1.8—根據權值構造郝夫曼樹並計算帶權路徑長度
圖
- 圖–使用鄰接矩陣創建圖並用多種方式遍歷
- 圖–使用鄰接表創建圖並用多種方式遍歷
- 圖–Prim(普里姆)算法
- 圖–Kruscal(克魯斯卡爾)算法
- 圖–最短路徑 Dijkstra(迪傑斯特拉)算法
- 圖–最短路徑 Floyd(弗洛伊德)算法
- 圖–拓撲排序算法
- 通過深度優先遍歷判斷有向圖是否有環
- 圖—求不帶權無向連通圖距頂點最遠的頂點
- 圖—判斷兩個頂點之間是否有路徑
- 圖–判斷無向圖G是否是一棵樹
- 圖–輸出圖中連續爲1的最大塊數
- 天勤第七章綜合應用題1.7—將圖的鄰接表改成鄰接矩陣
- 天勤第七章綜合應用題1.9—非遞歸DFS遍歷以鄰接表方式存儲的圖
排序
- 排序–常見的幾種排序方法及思想
- 排序–冒泡排序
- 排序–基於數組的直接插入排序
- 排序–基於鏈表的直接插入排序
- 排序–折半插入排序
- 排序–希爾排序
- 排序–簡單選擇排序
- 排序–簡單選擇排序遞歸版
- 排序–快速排序
- 排序–二路歸併排序
- 排序–堆排序
以上部分的代碼來自天勤數據結構和1800習題集,剩下的是我在其他地方看到記錄的,大家可以根據自身需要,擇取您薄弱的地方重點做一做,爭取不留短板,不留遺憾。