原创 百度面試:刪除ansi編碼中的字母和數字

已知一個字串由GBK漢字和ansi編碼的數字字母混合組成,編寫C語言函數實現從中去掉所有ansi編碼的的數字和字母(包括大小寫),要求在原字串上返回結果。函數接口爲:int filter_ansi(char*gbk_string)。注:漢

原创 百度的一道面試題(關於Cache的)

某型CPU的一級數據緩存大小爲16K字節,cache塊大小爲64字節;二級緩存大小爲256K字節,cache塊大小爲4K字節,採用二路組相聯。經測試,下面兩段代碼運行時效率差別很大,請分析哪段代碼更好,以及可能的原因。 爲了進一步提高效率

原创 筆試面試總結(1)

1、TCP三次握手 http://blog.csdn.net/a45872055555/article/details/38817837 2、堆排序的實現 http://blog.csdn.net/a45872055555/artic

原创 二叉樹非遞歸遍歷和層序遍歷(各種版本)

先說下遞歸遍歷吧,特別簡單,交換三者的順序,就能得到三種遞歸方式。 以先序遍歷爲例: void preOrder1(BinTree *root) //遞歸前序遍歷 { if(root!=NULL) {

原创 c++中不能重載的運算符

算術運算符:+,-,*,/,%,++,--;位操作運算符:&,|,~,^(位異或),<<(左移),>>(右移)邏輯運算符:!,&&,||;比較運算符:<,>,>=,<=,==,!=;賦值運算符:=,+=,-=,*=,/=,%=,&=,|=

原创 查找算法

一、順序搜索法 由於不知道要查找元素的具體位置,只能一個元素一個元素的去判斷。 平均查找(n+1)/2 int find(int array[], int length, int value) { if(NULL == array |

原创 用C語言實現函數void * memmove(void *dest,const void *src,size_t n)

在C/C++標準庫函數中存在該函數,它用於將src指向的n個字節的數據拷貝到dest位置。在標準庫函數中還存在另外一個函數memcpy,它也用來實現內存拷貝,但它不考慮區間重疊問題,在拷貝過程中可能造成重疊錯誤。 而memmove則針

原创 strcat函數實現

strcat函數說明: 1、把src所指字符串添加到dest結尾處(覆蓋dest結尾處的'\0')並添加'\0'。 2、src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。------但這些都是用戶來保證

原创 strcpy函數及注意事項

已知strcpy函數的原型是: char *strcpy(char *dst, const char *src); 要求: 1、實現strcpy函數 2、解釋爲什麼要返回char * 3、假如考慮dst和src內存重疊的情況,strcp

原创 二叉樹的深度優先遍歷與廣度優先遍歷

深度優先搜索算法(Depth First Search),是搜索算法的一種。是沿着樹的深度遍歷樹的節點,儘可能深的搜索樹的分支。 當節點v的所有邊都己被探尋過,搜索將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可

原创 strcmp函數實現

函數功能: 比較兩個字符串。設這兩個字符串爲str1,str2,若str1=str2,則返回零;若str1>str2,則返回1;若str1<str2,則返回-1。(也可以返回0,正數,負數) 注意點: 1、輸入參數有效性判斷 2、比較是

原创 memmove函數實現

memcpy與memmove的目的都是將N個字節的源內存地址的內容拷貝到目標內存地址中。 但當源內存和目標內存存在重疊時,memcpy會出現錯誤,而memmove能正確地實施拷貝,但這也增加了一點點開銷。 memmove的處理措施:

原创 C++中智能指針的設計和使用

智能指針(smart pointer)是存儲指向動態分配(堆)對象指針的類,用於生存期控制,能夠確保自動正確的銷燬動態分配的對象,防止內存泄露。它的一種通用實現技術是使用引用計數(reference count)。智能指針類將一個計數器與

原创 memchr函數實現

函數功能: 功能:從buf所指內存區域的前count個字節查找字符ch。  說明:當第一次遇到字符ch時停止查找。 如果成功,返回指向字符ch的指針;否則返回NULL。 void *memchr(const void *buf, in

原创 memset函數實現

函數功能: 將以ptr作爲起始地址的數據的num個字節設置爲value。函數返回destination指針。 注意: 1、這裏是按照字節來設置的,因此如果對一個數組來賦初值的話,只能賦值0,或者-1(也就是全1)。 2、凡是mem***函