C++ 計時器類實現:基於 參考《C++ 程式設計哲學》風格,實現一個功能完整、介面清晰的 Time 類,支援時間標記、差值計算、日期時間分量提取等常用操作,適用於效能測試、日誌時間戳、定
C 語言可變參數實現原理與自製 PrintInt 函數詳解
printf、scanf 等函數支援不定數量參數,靠的是 C 語言可變參數 (Variadic Functions)機制。本文深入剖析堆疊傳參原理,手把手實現一
C 語言字串刪除指定字符:高效 O(n) 原地算法實現
在字串 A 中刪除所有出現在字串 B 中的字符,是經典的字串處理面試題。本文提供O(n + m) 時間、O(1) 空間的原地刪除算法,附完整代碼與關鍵技巧解析。
程式自動生成迷宮:DFS 隨機化演算法完整實作與優化版本
迷宮生成是圖論與隨機化演算法的經典應用。本文介紹兩種主流演算法:遞迴回溯器(原文版本)與標準隨機化 DFS(優化版),提供完整 C++ 實作、視覺化輸出與複雜度
C 語言經典筆試題:字元陣列 vs 字元指標修改字串常量的差異
這是 C 語言面試筆試的必考經典:字元陣列與字元指標初始化字串時,記憶體佈局與可修改性的本質區別。看懂這道題,就理解了 C 語言字串存儲的核心機制。 題目:對
C++ 聚合初始化陷阱:類別與結構體的差異詳解
C++ 中使用大括號 {} 進行聚合初始化時,類別與結構體行為截然不同。本文深入剖析規則差異、構造函數影響與正確初始化姿勢。 基本類型陣列與結構體:支援聚合初
逆序數求解完全指南:歸並排序與樹狀數組兩大 O(n log n) 算法
逆序數是衡量序列「無序程度」的核心指標:對序列 S[i],統計每個元素前面有多少比它大的元素,總和即為逆序數。例如 [4, 3, 1, 2]: 4 前面無元素
C/C++ 浮點數判斷整數的正確姿勢:避開精度陷阱
判斷浮點數變數是否代表整數值 (如 4.0、-3.0) 看似簡單,實則暗藏浮點精度陷阱。直接比較 n == (int)n 或 n - (int)n == 0.0
Linux 進程管理深度解析:孤兒進程與殭屍進程(二)
承接上篇,本文聚焦殭屍進程:子進程結束但父進程未回收,導致 PCB 滯留進程表。大量殭屍進程會耗盡 PID,癱瘓系統建立新進程能力。 殭屍進程示範程式 父進程
Linux 進程管理深度解析:孤兒進程與殭屍進程(一)
在 UNIX/Linux 系統程式設計中,進程結束後的狀態處理是核心知識點。孤兒進程與殭屍進程是兩種截然不同的異常狀態,理解其成因、區別與處理機制,是編寫健壯系
C++ 句柄類模式:利用前向宣告減少編譯依賴與重新編譯
當頭文件修改時,所有包含它的原始檔都需重新編譯——這是著名的「易碎基類問題」。對於大型專案,編譯時間極其可觀。句柄類模式配合前向宣告,能將實作細節隱藏於 .cp
C 語言動態構建 SQLite3 插入語句:官方推薦的安全做法
在 C 語言中向 SQLite3 動態插入資料時,直接拼接 SQL 字串極易導致SQL 注入與特殊字元轉義錯誤。SQLite 官方文檔提供標準解法:sqlite
手把手寫演算法:Kruskal 最小生成樹完整實現(中)
承接上篇,Kruskal 演算法三大核心挑戰:邊排序、樹查找、樹合併。本文逐一攻克,採用通用排序框架、陣列式樹管理與節點計數查找策略。 1. 通用氣泡排序框架
手把手寫演算法:Kruskal 最小生成樹完整實現(上)
Kruskal 演算法是另一種經典的最小生成樹 (MST) 演算法。與 Prim 以「節點為中心擴展」不同,Kruskal 以「邊為中心」處理:將所有邊按權重排
手把手寫演算法:Prim 最小生成樹完整實現(下)
承接前兩篇,本文完善 Prim 演算法最後兩個關鍵子函數:無效邊過濾與鏈表排序,並總結完整實現心得。 F. 無效邊過濾 delete_unvalid_line
手把手寫演算法:Prim 最小生成樹完整實現(中)
承接上篇,我們繼續自頂向下實現 Prim 演算法求最小生成樹 (MST)。本篇完成核心框架的三大關鍵函數:建樹主流程、邊選擇策略、節點加入機制。 資料結構回顧
C 語言入門專案:記憶力挑戰小遊戲(無指標、無陣列實現)
這是一個經典的 C 語言入門專案:記憶力挑戰遊戲。規則簡單:程式隨機產生 N 位數字,顯示 1 秒後清除畫面,玩家輸入記憶中的數字。答對則位數遞增繼續,答錯即結
IOCCC 國際混亂 C 代碼大賽:那些讓人腦洞大開的獲獎神作
國際混亂 C 代碼大賽(IOCCC,International Obfuscated C Code Contest)是程式設計界最獨特的比賽之一:比拚的不是演算