C語言字符串進階操作:刪除指定字符、去首字符、翻轉字符串
標準庫 <string.h> 提供了 strcpy、strcat、strstr 等基礎接口,但實際開發中常遇到更靈活的需求:刪除字符串中所有數字、刪
C語言實現帶頭結點單鏈表節點刪除:按位置與按值刪除
在《C語言實現單鏈表節點的刪除(不帶頭結點)》中,我們已探討無頭結點鏈表的節點刪除。本文將重點講解帶頭結點單鏈表中兩種常見的刪除操作:按指定位置刪除與按節點值刪
C語言雙向鏈表刪除節點:無哨兵版本的完整邊界處理
無哨兵刪除的三大邊界 刪除首節點:需更新 head 指針,新首節點 prior = NULL。 刪除尾節點:前驅節點 next = NULL。 刪除唯一節點:
C語言雙向鏈表建表:頭插法與尾插法的異同與實現
兩種建表策略對比 維度頭插法尾插法 輸入順序與鏈表順序逆序同序 是否需尾指針不需要需要(或遍歷到尾) 適用場景棧、逆序輸出、單向鏈表隊列、保持輸入順序、雙向鏈
C語言雙向鏈表任意位置插入:帶頭尾哨兵節點的統一邏輯
插入位置定義 pos = 0 表示頭節點之後(第一個有效位置),pos = 1 表示第二個,以此類推。若 pos == length 等價於尾插。 統一插入邏
C語言雙向鏈表完整操作集:帶頭尾哨兵節點的非循環設計
設計優勢 統一邊界:空表 next == tail,插入/刪除無需特判首尾。 雙向遍歷:正序/逆序打印、從尾部高效刪除。 O(1) 定位首尾:頭尾哨兵直接給出
數據結構基石:二叉樹核心概念、存儲結構與遞歸遍歷全解析
二叉樹定義與術語 節點:數據元素 + 左/右子樹指針。 根節點:無父節點的唯一節點。 葉子節點:無子節點。 度:子樹個數(0/1/2)。 深度/高度:根到節點
C語言單鏈表實現棧:帶頭節點設計,動態擴容、無容量上限
為什麼單鏈表適合做棧? 棧只操作棧頂,單鏈表頭部插入/刪除恰好是 O(1)。 引入頭節點(哨兵),統一空/非空操作,無需特判首節點。 動態分配節點,理論容量僅
C語言靜態數組實現循環隊列:犧牲一單元區分滿空的經典技巧
循環隊列核心思想 數組首尾相連形成邏輯環,head 指向隊頭元素,tail 指向下一個插入位置。當 tail+1 == capacity 時回繞到 0。 關鍵
C語言靜態數組實現棧:固定容量、O(1)操作的極簡模型
適用場景 最大深度可預估且固定(如表達式求值、遞歸轉迭代、DFS 手動棧)。 嵌入式環境禁用動態分配,追求確定性、零碎片。 教學演示棧邏輯,屏蔽記憶體管理細節
C語言雙向鏈表實現隊列:帶頭尾節點的非循環設計
為什麼選雙向鏈表實現隊列? 隊列只在頭部刪除、尾部插入,單鏈表尾部插入需遍歷 O(n),雙向鏈表配合尾指針 O(1)。 引入虛擬頭尾節點(哨兵),統一空/非空
C語言多線程編程入門:pthread_create 創建多線程、參數傳遞與線程函數模型
POSIX 線程 是 Unix/Linux 多線程編程的標準接口。本文通過創建 5 個線程並發執行同一線程函數的完整示例,講解 pthread_create 參