原创 網絡編程時的字節順序變換,地址變換
不同的 CPU 有不同的字節序類型 這些字節序是指整數在內存中保存的順序 這個叫做主機序 最常見的有兩種 1 . Little endian :將低序字節存儲在起始地址 2 . Big endian :將高序字節存儲在起始地址 LE
原创 數據結構之鏈表--鏈表環
一、判斷單鏈表是否有環 原理:就像操場上跑步一樣,跑的快的終會套圈(相遇)。因此可以設置兩個指針,一個慢的(slow),一個快的(fast),這樣若單鏈表中存在環的話就會相遇。 typedef struct list{ int data
原创 二叉樹按層次遍歷--隊列實現
最近數據結構看的還真是噁心額,腦子不好使,算法寫不來額····· 二叉樹一大堆概念性的東西,不過還是寫吧。 二叉樹(binary tree)二叉樹的基本形態 二叉樹也是遞歸定義的,其結點有左右子樹之分,邏輯上二
原创 linux內核同步機制中的概念介紹和方法
Linux設備驅動中必須解決的一個問題是多個進程對共享資源的併發訪問,併發訪問會導致競態,linux提供了多種解決競態問題的方式,這些方式適合不同的應用場景。 Linux內核是多進程、多線程的操作系統,它提供了相當完整的內
原创 邏輯地址、線性地址、物理地址和虛擬地址理解
邏輯地址(Logical Address) 是指由程式產生的和段相關的偏移地址部分。例如,你在進行C語言指針編程中,能讀取指針變量本身值(&操作),實際上這個值就是邏輯地址,他是相對於你當前進程數據段的地址,不和絕對物理地址相干。只有在I
原创 題目:請實現兩棵樹是否相等的比較,相等返回,否則返回其他值,並說明算法複雜度。
數據結構爲: [cpp] view plaincopy typedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode
原创 c++類大小(涵蓋繼承 虛繼承 虛函數表)
涉及到c++中求類大小時需要特別注意一下幾點 1.爲類的非靜態成員數據的類型大小之和. 2.有編譯器額外加入的成員變量的大小,用來支持語言的某些特性(如:指向虛函數的指針、虛繼承、多重繼承). 3.爲了優化存取效率,進行的邊緣調整
原创 進程調度算法
先來先服務(First Come First Service,FCFS)調度算法按照進程進入就緒隊列的先後順序選擇可以佔用處理器的進程。這是一種不可搶佔方式的調度算法,優點是實現簡單,缺點是後來的進程等待CPU的時間較長。它現今主要用作
原创 編程實現memcpy()
以下內容轉自:http://my.oschina.net/renhc/blog/36345,作者:任洪彩,2011-12-02],這篇解釋的相對比較透徹些! 面試中如問到memcpy的實現,那就要小心了,這裏有陷阱。 先看下標準me
原创 素數的查找
使用篩法找出4萬內的素數 因爲2,3分別是素數中最小的偶數和奇數,所以只要是2或者3的倍數的都不是素數,剩下的則是素數。 #define MAXN 40000 int SPrime(void) { int i, j;
原创 雙指針的妙用(1)--特定字符的提前
實現一個時間複雜度爲n的算法,將一個字符串中的所有*提前:he*llo wor*l*d => ***hello world int move_stars_to_front(char *buffer) { if (NULL == b
原创 算法之memmove的實現
實現void* memmove(void *pDst, const void *pSrc, size_t len); 需要考慮內存重疊的問題 和其它邊界情形; void memmove(void *pDst,const void *pS
原创 位圖法之排除相同的數
從一個正整數數組中找出重複的數,假設數組的值都小於65536 #define MAXMUM 65536 void find_repeated_number(int a[], in n) { int tmp[MAXMUM]; int
原创 鏈表--查看鏈表是否含有環(不一樣的方法)
雙指針法,一個快指針,一個慢指針,鏈表若有環的話,快指針必然會與慢指針相遇 <span style="font-size:18px;">typedef struct _node { int data; struct _n
原创 位圖法--查找字符串中第一個不重複的字符
使用爲位圖法,查找字符串中第一個不重複的字符,使用位圖法,該字符是數組的index,而出現的次數則是數值 char find_first_single_char(const char *str) { int tmp[256]={