原创 二叉查找樹轉爲雙向鏈表

對於二叉查找樹本能的想到了中序遍歷,中序遍歷二叉樹的結果是有序的,只要使用非遞歸中序遍歷,中間稍作修改應該就可以。這個是第一反應,覺得應該不難。         不過還是,網上搜索一下,在網易何海濤的技術博客中看到,關於遞歸的解法。這個方

原创 c++ 實現隊列

主要是想聯繫一下c++中的模板怎麼使用,隨便複習一下隊列。隊列最基本的數據結構元素先進先出,這些就不多說了。注意:寫程序時copy構造函數和copy賦值函數的寫法。 #include<iostream> #include<string>

原创 c++ 實現模板方法模式

模板方法模式(Template Method):定義一個操作中的算法的骨架,而將一些方法實現延遲到子類。模板方法使得子類可以不改變一個算法的結構即可以重定義該算法的某些特定步驟。          通俗一點講,假設一個類或者算法實現需要調

原创 基數排序的java實現

        前幾天師兄問我基數排序怎麼實現,原理我很清楚啊,就給他說了,但是當他詳細問道用具體的計數排序怎樣實現時,我盡然沒有詳細的實現思路。今天

原创 unix網絡編程常用函數詳解

基本TCP客戶-服務器程序的套接口函數如下圖: 1、socket函數 原型:#include<sys/socket.h> int socket(int family, int type, int protocol); 返回值:非負描

原创 java實現紅黑樹

           紅黑樹是一種經典的數據結構,在linux內存管理、nginx 等很多地方用到它。主要操作包括插入、刪除,其中插入6種情況,刪除8種情況,詳細的思路就不說了,如果不太明白的請參考算法導論13章,看的時候一定要把每一種插

原创 鏈表快速排序

         快速排序大家都很熟悉了,實現的時候都是用的數組,但是有沒有想過鏈表進行快速排序呢(當然還有鏈表歸併排序,可以想一下鏈表能不能堆排序,這個下篇文章再說); 我第一次聽說鏈表快速排序是去年聽師兄說的,當時他去百度面試,直接就

原创 鏈表歸併排序

            主要思路:                1   如果爲NULL或者只有一個節點那麼直接返回;                2    將鏈表分成兩部分,分別進行排序,形成兩個有序鏈表;              

原创 c++ 實現工廠模式

        工廠模式大家都很熟悉了,就是利用多態,利用基類指針指向新生成的派生類,用該指針調用派生類的函數。 今天看《effective c++》寫代碼主要是練習一下,代碼中類實現沒有考慮太多的構造函數及虛構函數,各位見諒。    

原创 c++ 實現策略模式

策略模式(Strategy):它定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 上面是《大話設計模式》中給出的定義,感覺這個概念給的不好,看了之後不能完全清晰明白該模式(可能自己水平太

原创 eclipse、myeclipse 打開當前文件所在文件夾的方法

           遇到這個問題n多次了,每次都得google,這次還是寫下來吧,生的下次在亂找。網上說的方法主要有兩種,一種是裝一個插件,一種是修改設置。後一種比較簡單實用,直接說第二種了。在run-->External Tools

原创 二叉樹 層次遍歷

二叉樹按層次遍歷,要求在不同的層次之間輸出空行。 template<class Type> void Tree<Type>::level() const { queue<Node<Type>*> q; Node<Type> *p =

原创 堆排序

       堆排序大家都很熟悉,原理我也不講了,需要注意的一點是對排序是不穩定。直接上代碼了。        void heapify(int array[], int len, int i) { int j = i*2 + 1;

原创 java實現二叉樹

         前幾天有人問我二叉樹的後序非遞歸遍歷怎麼實現,一時沒想起來,今天有時間,就把二叉樹的相關操作都寫了一下,包括創建,中序、先序、後序(遞歸和非遞歸),其中重點的是java在先序創建二叉樹和後序非遞歸遍歷的的實現。     

原创 IP轉換爲32位無符號數(即,inet_aton函數)

上週跟着宿舍一哥們去海豚瀏覽器霸面,問我的題比較簡單,二分查找的;當時莫名其妙的緊張了,答的不好,被鄙視了。 不過問宿舍哥們的題是IP轉換成無符號32位整數,當時我感覺這個好像很熟悉的,就是想不起來。現在正好看網絡編程,都清楚了。在uni