【數據結構】彙總 && 源碼

概要

使用面向對象理論、泛型編程思想、C++語言中重載、繼承、接口、多態和模板等技術,實現相關的數據結構和常規算法,打造了一個可複用的數據結構類私有庫。其中建立了線性表的順序存儲、數組、單/雙向/循環鏈表、棧、隊列、通用樹、二叉樹、圖等模板;遞歸、排序、kmp、八皇后問題等算法的實現;頂層弗列、單一繼承樹、異常安全等經典架構設計準則;以及單例模式、代理模式、工廠模式等設計模式也都運用其中。git

詳述

  1. 建立異常類組使用異常處理機制分離正常邏輯和異常邏輯,建立頂層弗列 Object 保證單一繼承樹和規範動態內存申請行爲;
  2. 數組類和線性表類的 插入、刪除、查找、獲取、設置、遍歷、反轉、長度、清空等操做的實現,包括線性表的靜態/動態順序存儲結構類、線性表的單/上向/循環鏈式存儲結構類;
  3. 建立智能指針類能夠有效規避多重釋放和內存泄漏的 Bug;
  4. 建立棧類族,包含順序棧和鏈式棧存儲結構類,有棧建立、銷燬、清空、進棧、出棧、棧頂元素獲取、棧大小;
  5. 建立隊列類族,包含順序隊列和鏈式隊列存儲結構類,有隊列建立、銷燬、清空、進隊、出隊、獲取隊頭、隊列長度、判斷隊列是否爲空,以及棧與隊列的相互轉換;
  6. 建立字符串類族、重載實現其比較、加法、賦值、[]、插入、判斷、區孔等操做;
  7. KMP 算法、遞歸思想的應用實現鏈表反轉、排序合併、八皇后問題;
  8. 排序類的實現,選擇排序、插入排序、冒泡排序,希爾排序,歸併排序,快速排序等排序算法的實現;
  9. 通用樹類的實現,實現了樹的查找、插入、清除、刪除、節點數/高度/度的獲取、樹的層次遍歷等操做;
  10. 二叉樹類的實現,實現樹的查找、插入、清除、刪除、節點數/高度/度的獲取、樹的層次遍歷和典型遍歷、克隆、比較、相加、線索化等操做;
  11. 圖類的實現,其中有圖的遍歷、最小生成樹、最短路徑算法的實現。

全部類及其算法所有利用泛型編程封裝進入自定義命名空間,採用迭代開發的過程,設計時在細節和總體上就有充分考慮其健壯性和拓展性,棵適用於任意數據類型,作到可複用可移植。github

第0課 - 啓航,新的目標!

第1課 - 進階高手的大門

第2課 - 數據的藝術

第3課 - 初識程序的靈魂

第4課 - 程序靈魂的審判

第5課 - 算法的時間複雜度

第6課 - 算法效率的度量

第7課 - 課程學習小問答

第8課 - 泛型編程簡介

第9課 - 智能指針示例

第10課 - C++異常簡介

第11課 - 異常類構建

第12課 - 頂層父類的建立

第13課 - 類族結構的進化

第14課 - 線性表的本質和操做

第15課 - 線性表的順序存儲結構

第16課 - 順序存儲結構的抽象實現

第17課 - StaticList 和 DynamicList

第18課 - 順序存儲線性表的分析

第19課 - 數組類的建立(上)

第20課 - 數組類的建立(下)

第21課 - 線性表的鏈式存儲結構

第22課 - 單鏈表的具體實現

第23課 - 順序表和單鏈表的對比分析

第24課 - 單鏈表的遍歷與優化

第25課 - 靜態單鏈表的實現

第26課 - 典型問題分析(Bugfix)

第27課 - 再論智能指針(上)

第28課 - 再論智能指針(下)

第29課 - 循環鏈表的實現

第30課 - 雙向鏈表的實現

第31課 - 老生常談的兩個宏(Linux)

第32課 - Linux內核鏈表剖析

第33課 - 雙向循環鏈表的實現

第34課 - 棧的概念及實現(上)

第35課 - 棧的概念及實現(下)

第36課 - 隊列的概念及實現(上)

第37課 - 隊列的概念及實現(下)

第38課 - 兩個有趣的問題

第39課 - 字符串類的建立(上)

第40課 - 字符串類的建立(下)

第41課 - KMP 子串查找算法

第42課 - KMP 算法的應用

第43課 - 遞歸的思想與應用(上)

第44課 - 遞歸的思想與應用(中)

第45課 - 遞歸的思想與應用(下)

第46課 - 排序的基本概念

第47課 - 選擇排序和插入排序

第48課 - 冒泡排序和希爾排序

第49課 - 歸併排序和快速排序

第50課 - 排序的工程應用示例

第51課 - 樹的定義與操做

第52課 - 樹的存儲結構與實現

第53課 - 樹中結點的查找操做

第54課 - 樹中結點的插入操做

第55課 - 樹中結點的清除操做

第56課 - 樹中結點的刪除操做

第57課 - 樹中屬性操做的實現

第58課 - 樹形結構的層次遍歷

第59課 - 樹到二叉樹的轉換

第60課 - 二叉樹的深層特性

第61課 - 二叉樹的存儲結構設計

第62課 - 二叉樹中的結點查找操做

第63課 - 二叉樹中的結點插入操做

第64課 - 二叉樹中的結點刪除與清除

第65課 - 二叉樹中屬性操做的實現

第66課 - 二叉樹結構的層次遍歷

第67課 - 二叉樹的典型遍歷方式

第68課 - 二叉樹的比較與相加

第69課 - 二叉樹的線索化實現

第70課 - 二叉樹的經典面試題分析

第71課 - 圖的定義與操做

第72課 - 圖的存儲結構(上)

第73課 - 圖的存儲結構(下)

第74課 - 圖的遍歷(BFS)

第75課 - 圖的遍歷(DFS)

第76課 - 最小生成樹(Prim)

第77課 - 最小生成樹(Kruskal)

第78課 - 最短路徑(Dijkstra)

第79課 - 最短路徑(Floyd)

第80課 - 最長不降低序列(完結)

文件:xx.h
image.png
文件:xx.cpp
image.png面試

源碼

源碼算法

以上內容整理於狄泰軟件學院系列課程,請你們保護原創!編程

相關文章
相關標籤/搜索