原创 數據結構及算法基礎 之圖(二)鄰接表
文章目錄一、鄰接表二、代碼實現 一、鄰接表 鄰接矩陣看上去是個不錯的選擇,首先是容易理解,第二是索引和編排都很舒服~但是我們也發現,對於邊數相對頂點較少的圖,這種結構無疑是存在對存儲空間的極大浪費。因此我們可以考慮另外
原创 數據結構及算法基礎 之圖(一)鄰接矩陣
文章目錄一、圖結構介紹二、鄰接矩陣三、代碼實現 一、圖結構介紹 圖的定義與術語(必看):http://www.360doc.com/content/17/0714/10/17799864_671231489.shtml
原创 Smart210學習記錄(十四) 之nand flash驅動
文章目錄一、資料二、驅動相關流程三、驅動代碼 一、資料 可以看看這篇博客:Linux nand flash 驅動詳解 二、驅動相關流程 當讀寫文件請求到來的時候,流程如下 通過vfs進入文件系統, 文件系統把文件
原创 數據結構與算法基礎 之線性表(二)
文章目錄前言一、鏈式線性表二、代碼示例三、分析四、對比五、總結 前言 前面我們講的線性表的順序存儲結構,它最大的缺點就是插入和刪除時需要移動大量元素,這顯然就需要耗費時間。那我們能不能針對這個缺陷或者說遺憾提出解決的方
原创 Linux 利用c函數操作Mysql
文章目錄前言API 前言 在Linux應用編程中,無法避免的會使用到MySQL,這時我就必須對MySQL c API 非常熟悉,這裏我將一些常見的記錄在此。 API mysql_affected_rows()
原创 數據結構及算法基礎 之圖(四) 圖的深度優先遍歷
文章目錄一、深度優先遍歷的遞歸定義二、基本實現思想三、示例測試 一、深度優先遍歷的遞歸定義 假設給定圖G的初態是所有頂點均未曾訪問過。在G中任選一頂點v爲初始出發點(源點),則深度優先遍歷可定義如下:首先訪問出發點v
原创 hash函數總結
文章目錄一、性能分析二、各類hash函數代碼 一、性能分析 常用的字符串Hash函數還有ELFHash,APHash等等,都是十分簡單有效的方法。這些函數使用位運算使得每一個字符都對最後的函數值產生影響。另外還有以MD
原创 數據結構及算法基礎 之棧與隊列(一)
文章目錄一、棧的定義二、代碼實例 一、棧的定義 棧是一種重要的線性結構,可以這樣講,棧是前面講過的線性表的一種具體形式。 就像我們剛纔的例子,棧這種後進先出的數據結構應用是非常廣泛的。在生活中,例如我們的瀏覽器,每點擊
原创 排序(六) 之堆排序
文章目錄一、堆的基本性質二、堆的分類1. 最小堆2. 最大堆3. 堆三、維護堆的性質四、堆排序1. 建堆2. 堆排序操作五、代碼示例六、實例測試 一、堆的基本性質 堆也可以說是一個完全二叉樹,就是除了最底層的,其它層是
原创 排序(四) 之快速排序
文章目錄一、快速排序二、排序原理三、代碼示例四、算法分析五、測試 一、快速排序 快速排序應該時排序算法中最好的一種,看看它的命名都顯得那麼誠實。快速排序也是我們必須掌握的一種排序算法,因爲面試的時候絕大概率是要出現的。
原创 排序(一) 之冒泡排序
文章目錄一、排序的重要性二、冒泡排序 一、排序的重要性 在實際的工作中,我們經常會遇到從大量數據中查找數據的例子。爲什麼要用排序呢,那肯定是排序給我們帶來了極大的好處。 如果數據量只有100條、1000條,那麼或許有沒
原创 數據結構及算法基礎 之圖(三)十字鏈表
文章目錄一、十字鏈表二、代碼示例 一、十字鏈表 鄰接表在某種程度上是有缺陷的,它表示了出度就表示不了入度。所以出現了十字鏈表,它既能表示入度也能表示出度。 說通俗點,十字鏈表也就是鄰接表的改進,頂點集包含兩個指針,
原创 排序(三) 之希爾排序
文章目錄一、希爾排序二、代碼示例 一、希爾排序 插入排序一個很明顯的缺點是插入元素時需要與已經排序的元素進行對比,對比的次數可能會比較多,考慮最壞的情況,如果原始的數組是倒序的,每插入一個元素時都要跟所有已經排好序的元素進
原创 Murmurhash 哈希算法 介紹與實現
最近在項目代碼中看到了一種hash算法,以前沒有遇見過,在此記錄下來。 一、介紹 MurmurHash 是一種非加密型哈希函數,適用於一般的哈希檢索操作。 由Austin Appleby在2008年發明, 並出現了多個變種
原创 Linux多人羣聊系統(簡單多線程服務器)
文章目錄一、要求二、提示1. 服務器端2. 客戶端三、程序四、測試 一、要求 通過一個服務器實現最多5個客戶之間的信息羣發。 服務器顯示客戶的登錄與退出; 客戶連接後首先發送客戶名稱,之後發送羣聊信息; 客戶輸入bye代