原创 Go語言基礎--命名&變量&基本數據類型

命名規則 go語言中的函數、變量、常量、類型、語句標籤和包的名稱遵循一個簡單的規則:名稱的開頭是一個字母或者下劃線,後面可以跟任意數量的字符/數字和下劃線,並區分大小寫。如heapSort和HeapSort是不同名稱。 在命名時

原创 二叉樹之創建與遍歷

本篇博客中的一些規則(比如根節點的層次爲1)全部來自於數據結構(C語言版) 樹 在數據結構中樹是一個非常重要的知識點,在樹的學習過程中我們可以知道的是,它中的很多歌關鍵名詞,這些基本概念有時可以讓我們很清楚的做一些關於性質的選擇

原创 二叉樹的非遞歸遍歷

在上一篇博客中我們已經簡單介紹過了二叉樹的創建和一些基本操作以及對於先序,中序,後序的遞歸遍歷,以及層序的非遞歸遍歷,二叉樹之創建與遞歸遍歷,如果對遞歸遍歷和層序的非遞歸有問題可以去看看; 本篇波可完整代碼 請看二叉樹 非遞歸遍歷

原创 二叉樹的線索化

什麼是線索化 在前面二叉樹的遍歷中我們可以瞭解到,二叉樹的先序、中序、後序、層序遍歷,所以我們都知道當以二叉樹鏈表作爲存儲結構時,只能找到結點的左、右孩子信息,而不能直接得到結點在任一序列中的前驅和後繼信息,這種信息只有在遍歷的動

原创 哈夫曼樹->哈夫曼編碼

基本概念 定義從A結點到B結點所經過的分支序列爲從A結點到B結點的路徑; 定義從A結點到B結點所進過的分支個數爲從A結點到B結點的路徑長度; 從二叉樹的根結點到二叉樹中所有結點的路徑長度紙盒爲該二叉樹的路徑長度; Huffm

原创 單鏈表的相交問題

在單鏈表的衆多問題中,其中單鏈表的相交問題就佔了比較多的成分,在鏈表中分帶環相交,不帶環相交等等。。 所以我們先從不帶環的單鏈表說起; 兩個不帶環的單鏈表 判斷兩個單鏈表是否相交??? 在這個問題中,我們得先分清情況,下面我用圖

原创 排列組合的代碼分析

排列組合 大家都在高中學習過改了組合了,我簡單說一下排列組合的概念,就來解決用代碼寫出排列組合的結果 什麼是排列組合 排列組合是組合學最基本的概念。所謂排列,就是指從給定個數的元素中取出指定個數的元素進行排序。組合則是指從給定個數

原创 使用gdb調試多進程多線程程序

其實,我們在VS編譯器中用的調試工具是集成的軟件,但是在Linux中有特定的工具GDB,其實這是一個很強的工具,我其實用的不是很6,其實這個真的強,希望大家和我一樣努力的來學習使用GDB調試;在這先推薦一個大神陳皓,博客已經不更新

原创 稀疏矩陣的壓縮存儲與轉置與加法

稀疏矩陣 什麼是稀疏矩陣: 稀疏矩陣:在M*N的矩陣中,有效元素的個數遠小於無效元素的個數(一般是:有效/無效 < 0.05),且這些數據的分佈沒有規律。可能表述的不是很完美,所以稀疏矩陣> 例如: 從上圖中我們可以看到

原创 單鏈表實現約瑟夫環

大家對約瑟夫環是比較陌生的,但是對於大多數人來說,丟手絹卻一點都不陌生,其實約瑟夫環和丟手絹差不多。 約瑟夫環 約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號爲k的

原创 紅黑樹

我們在前面的2票博文中已經寫到簡單介紹了搜索二叉樹搜索二叉樹,AVL樹AVL樹的創建,我們能該看到的是AVL樹是一個搜索二叉樹,其實,我們現在說的紅黑樹也是基於搜索二叉樹和AVL樹中的一些操作上來實現的,如果你對搜索二叉樹有疑問,

原创 線程安全與可重入性

線程安全 當用線程編寫程序時,必須小心地編寫那些具有稱爲線程安全性(thread safety)屬性的函數。一個函數被稱爲線程安全的(thread-safe),當且僅當被多個併發(兩個或多個時間在同一時間間隔內發生)線程調用時,它

原创 基於Huffman樹的文件壓縮

利用huffman編碼的思想對文件進行壓縮,主要原理是通過huffman編碼來重新表示字符,使得出現頻率高的字符編碼短,出現少的字符編碼長。整體下來的話,所需的總的bit位是減少的。但是要注意當大部分字符出現的頻率都差不多時,hu

原创 堆的創建,插入,刪除

堆 堆的概念:如果有一個關鍵碼的集合K={k0, k1, k2, ······,kn-1},把它的所有元素按完全二叉樹的順序存儲方式存儲在一個一維數組中,並滿足:ki <= K2*i +1 且ki<=K2*i + 2; i=0

原创 用先序遍歷和中序遍歷重建二叉樹

我們都知道二叉樹有四種遍歷結果,先序,中序,後序,層序;並且他們的遍歷方式以及遍歷結果我們也都知道 二叉樹的非遞歸遍歷. 所以: 在二叉樹的先序遍歷結果中,第一個數字總是樹的根結點的值。但在中序遍歷結果中,根結點位於序列的中間,