C++ 單詞統計:基於 set 與 map 的詞頻統計實現
需求 讀取文本文件 a.txt,按標點(, .)分詞,統計: 所有不重複單詞集合(set)。 每個單詞出現次數(map)。 類設計 CWord 封裝單詞字
迷宮求解:C++ DFS + 棧 非遞歸實現
問題描述 給定 6×6 迷宮矩陣(0 為通道,1 為牆),從 (1,1) 起點走到 (6,6) 終點,輸出路徑坐標序列。 算法設計 使用棧模擬深度優先搜索(
排序算法(三):冒泡排序 Java 實現與特性
算法思想 依次遍歷數組,相鄰元素兩兩比較。 若前者大於後者則交換,每輪將最大元素「冒泡」到最右端。 Java 實現 [java] package com.
排序算法(二):插入排序 Java 實現與最佳/最壞情況分析
算法思想 從第 2 個元素起,將當前元素插入已排序的左側部分。 從右向左比較,若當前元素較小則右移左側元素,直到找到合適位置插入。 Java 實現 [ja
排序算法(一):選擇排序 Java 實現與複雜度分析
算法思想 從頭到尾遍歷數組。 每輪在未排序部分找到最小元素,與當前位置交換。 Java 實現 [java] package com.robert.paix
C語言二維數組傳參完全指南:指針數組 vs 數組指針 vs 二級指針
核心錯誤 [cpp] void matrix_mult(float **p); // 錯誤:參數是二級指針 float a[3][3]; matrix_mult
C語言運算符優先級陷阱:& 與 == 的經典 Bug 案例
Bug 現場 [cpp] if (indicator & 0x8000 == 0x8000) { ... } 意圖:判斷 indicator 的第 16 位(
C語言返回數組的正確姿勢:靜態、動態分配與內存區解析
核心結論 C 語言不能直接返回局部數組(棧上分配,函數結束即銷毀)。正確做法有三種: 返回靜態數組(static,位於全局/靜態區)。 返回動態分配內存(ma
數據結構:二叉搜索樹(BST)核心操作完整偽代碼解析
BST 基本性質 左子樹鍵值 ≤ 根節點鍵值 ≤ 右子樹鍵值。 中序遍歷可得遞增序列。 基本操作時間複雜度與樹高 h 成正比(平均 O(log n),最壞 O
C語言「全能比較函數」進化:從類型相關返回到統一 int 返回
背景 編寫一個宏 COMPARE(TYPE, a, b),能對任意基本類型(int、double、char、float…)進行比較,並返回統一的 int: 0
C++ STL set 容器詳解:插入、遍歷、查找與返回值判斷
set 簡介 std::set 是關聯式容器,內部以紅黑樹實現,元素自動排序且唯一(無重複)。 核心操作 1. 插入元素 insert() 返回 pair&
C/C++ 程序內存佈局詳解:棧、堆、全局區、常量區、代碼區
程序內存五大區域 一個由 C/C++ 編譯的程序在運行時佔用的內存主要分為以下五個部分: 1. 棧區 由編譯器自動分配釋放。 存放函數參數、局部變量、返回地
UVA 12457:橢圓周長計算與數值積分優化
問題描述 UVA 12457 要求計算橢圓的周長。給定長軸 a 和短軸 b,需輸出周長,精度至少達到小數點後 6 位。 解題思路 方法一:積分 + 羅姆貝格加
Linux 串口程式設計實戰:C 語言解析 GPS NMEA 協議 (GPRMC 格式)
專案背景與目標 本專案展示如何在 Linux 環境下,使用標準 POSIX 終端機介面 (termios) 存取串口裝置 (如 /dev/ttyS0),並從聯星
嵌入式系統中寄存器操作函數解析:dispc_reg_in、dispc_reg_out 與 dispc_reg_merge
前言 在嵌入式開發與驅動程式編寫中,直接操作硬體寄存器是核心技能之一。本文深入解析三個常見的寄存器存取函數——dispc_reg_in、dispc_reg_ou
Linux 編譯報錯 openssl/md5.h 找不到:一條命令解決缺少開發包
錯誤現象 fatal error: openssl/md5.h: No such file or directory #include
查找算法精講:二分查找法與二叉查找樹實現(C++ 代碼)
一、二分查找法 前提條件 數組已按升序排序 支持隨機訪問(數組/Vector/Deque) 算法流程 初始化 low=0, high=n-1 循環 wh