排序二叉樹線索化:雙向鏈表加速區間刪除與順序訪問
排序二叉樹(BST)雖擁有優異的單點查找性能,但面對區間操作(如批量刪除某範圍節點)時極其低效:需逐一查找、驗證、刪除,重複遍歷造成極大浪費。解決之道是將 BS
排序二叉樹持久化:基於陣列索引的序列化儲存與載入技術
排序二叉樹(BST)因優異的插入、刪除、查找特性(平均 O(log n)),廣泛應用於工程開發。但其指標密集的結構導致序列化儲存較為棘手:指標位址在記憶體間不具
二叉樹廣度優先遍歷:佇列實作與逐層輸出完整指南
二叉樹遍歷常見三種:前序、中序、後序,均屬深度優先策略。而廣度優先遍歷(層序遍歷)鮮少被提及,卻在特定場景(如逐層輸出、最短路徑、樹的序列化)極具價值。其核心差
哈希二叉樹:結合雜湊表與樹結構的高效查找方案
在資料結構的世界裡,平衡二叉樹(如 AVL 樹、紅黑樹)以其優異的排序特性聞名,無論是插入、刪除還是查詢,理論時間複雜度均為 O(log n)。然而,現實場景中
演算法實作筆記:迷宮尋路——回溯法(DFS)完整教學與 C 語言實作
問題描述 給定一個二維網格迷宮,1 代表可通行路徑,0 代表牆壁,2 代表終點。從起點 (1,0) 出發,只能上下左右四向移動,尋找一條到達終點的路徑(或列舉所
鏈表排序演算法選型與插入排序 C 實現詳解
鏈表因非連續記憶體、無隨機訪問特性,排序演算法選型與陣列大異。本文分析八大經典排序在鏈表上的適用性,並給出插入排序完整實現。 鏈表排序適用性速查表 演算法適
字串查找演算法基礎:暴力比對法原理與 C 語言實作
問題定義 給定主串 haystack(長度 n)與模式串 needle(長度 m),找出 needle 在 haystack 中首次出現的起始位址;若不存在返回
字串查找演算法進階:從暴力優化到 KMP 核心思想
回顧:暴力查找與首輪優化 上篇實作的 strstr 採用雙層迴圈,外層遍歷主串 s 起始位置,內層比對模式串 p。第一版在 while 條件中反覆呼叫 strl
程式入門經典:用迴圈打印星星圖案(三角形、菱形、楊輝三角)
前言 「打印星星」是無數程式設計初學者的第一個迴圈練習。透過控制列(行)與欄(列)的巢狀迴圈,配合空格與星號的輸出邏輯,能訓練對索引邊界、幾何規律、條件判斷的直
演算法實作筆記:二元搜尋樹(BST)節點刪除完整指南
前言 二元搜尋樹(Binary Search Tree, BST)的刪除操作是資料結構教學與面試中的「必考題」。它綜合考察指標操作、樹形結構不變量維護、邊界情況
演算法實作筆記:爬樓梯問題——費波那契數列的遞迴與動態規劃視角
問題描述 有 n 階樓梯,每步可跨 1 階或 2 階。求到達頂端的不同走法總數。例如: n=1:[1] → 1 種 n=2:[1,1], [2] → 2 種
演算法實作筆記:有限狀態機(FSM)實現單詞計數器
問題背景 面試經典題:「統計一個由字母與空格組成的字串中有多少個單詞?」核心考點在於有限狀態機(Finite State Machine, FSM)的建模與實作
演算法實作筆記:選擇排序原理、C 語言實作與效能分析
選擇排序核心思想 選擇排序是一種簡單直觀的原地比較排序。它將陣列劃分為「已排序區」(左側)與「未排序區」(右側)。每一輪從未排序區中找出最小(或最大)元素,將其
演算法實作筆記:基數排序(Radix Sort)原理與 C 語言實作
什麼是基數排序? 基數排序是一種非比較型、穩定 的整數排序演算法。它不直接比較元素大小,而是將整數拆解為各位數字(個位、十位、百位……),從最低有效位(LSD)
演算法實作筆記:遞迴實現組合生成(資料選擇問題)
問題描述 給定一組互不相同的資料元素(例如 {1, 2, 3, 4}),要求從中選取 k 個元素,列出所有可能的組合(順序不計,即 {1,2} 與 {2,1}
C 標準庫 I/O 函數錯誤識別與處理:errno、perror 與 strerror 詳解
前言 在 C 語言開發中,標準庫 I/O 函數(如 fopen、fread、fwrite 等)在執行失敗時,不會直接拋出異常,而是通過返回值指示錯誤,並將具體錯
《C和指針》核心筆記精華:從輸入處理到指針運算的完整知識圖譜
經典著作《C和指針》被公認為進階 C 語言必讀。本文提煉書中最高頻、最易錯、最實戰的知識點,構建系統性速查筆記。 1. 安全輸入處理 int ch; whil
C/C++ 程式結束機制:exit() 與 return 的本質區別
核心差異一覽 屬性exit()return **作用範圍**終結**整個進程**返回**當前函式** **控制權移交**交給**作業系統**交給*