原创 【劍指offer】2.3.3 鏈表

面試題6:從尾到頭打印鏈表 題目:輸入一個鏈表的頭節點,從尾到頭反過來打印出每個結點的值。鏈表結點定義如下: struct ListNode {     int m_nKey;     ListNode *m_pNext; }; 解答:從

原创 【劍指offer】2.3.2 字符串

面試題5:替換空格 題目:請實現一個函數,把字符串中的每個空格替換成“%20”。例如,輸入“We are happy.”,則輸出“We%20are%20happy.”。 解答:我們可以先遍歷一遍字符串,統計出字符串中空格的數目,由此計算出

原创 【劍指offer】2.3.1 數組

面試題3:數組中重複的數字 題目一:找出數組中重複的數字。     在一個長度爲n的數組裏的所有數字都在0~n-1的範圍內。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。例如

原创 【劍指offer】2.2編程語言

面試題1:賦值運算符函數 題目:如下爲類型CMyString的聲明,請爲該類型添加賦值運算符函數。 class CMyString { public: CMyString(char* pData = NULL); CMy

原创 【C++】new和malloc的區別

    new和malloc的區別     1.申請的內存所在位置     new操作符從自由存儲區上爲對象動態分配內存空間,而malloc從堆上動態分配內存。自由存儲區是C++基於new操作符的一個抽象概念,凡是通過new進行內存申請,

原创 【C語言】指針和數組的區別

    指針和數組的區別     1.概念     數組是用於存儲多個相同類型數據的集合;指針相當於一個變量,它存放的是其他變量在內存中的地址。     2.賦值方式     同類型的指針變量可以相互賦值,數組不行,只能一個元素一個元素賦

原创 【C語言】堆和棧的區別

    在不同情境下,堆和棧代表不同的含義。一般有兩層含義:(1)程序內存佈景場景下,堆和棧代表的是兩種內存管理方式;(2)數據結構場景下,堆和棧表示兩種常用的數據結構。     1.數據內存分佈中的堆與棧     棧由操作系統自動分配釋

原创 【Linux系統編程】線程的創建

     線程的創建      線程庫的頭文件包含在頭文件pthread.h中:      線程創建函數:int pthread_create(pthread_t *id,pthread_attr_t* attr,void*(*pthre

原创 【Linux系統編程】進程間通訊--共享內存

     共享內存區域說白了就是多個進程共享的一塊物理內存地址,只是將這塊物理內存分別映射到自己的虛擬地址空間上。假設有10個進程將這塊區域映射到自己的虛擬地址上,那麼,這10個進程間就可以相互通訊。由於是同一塊區域在10個進程的虛擬地址

原创 【Linux系統編程】進程間通訊--消息隊列

     多進程在進行通訊時,有時可能需要數據的定向發送。比如進程A向管道文件中寫入數據"helloworld",意將"hello"發送給進程B,將"world"發送給進程C,怎麼做到呢?這就需要消息隊列。      消息隊列的特點:  

原创 【Linux系統編程】進程間通訊--信號量

    在學習信號量之前先來看幾個概念:     臨界資源:同一時刻只允許一個進程訪問的資源。     臨界區:訪問臨界資源的代碼段。     原子操作:不可被打斷的操作,沒有中間狀態。     進程同步:進程間協同工作。     進程異

原创 【Linux系統編程】進程間通訊--管道

    首先我們可以思考一下,爲什麼有多進程編程?通俗來講,多進程編程是爲了讓多個子任務同時併發運行,並且彼此間協調工作,以完成一個更大的任務,而不僅僅是數據的增加。而進程間都是相互獨立的,要完成進程間通訊,必須共享一些資源。由此引出了進

原创 【C語言】typedef(自定義數據類型)與#define(宏定義)用法比較

  不管是在C語言還是在C++中,typedef這個詞都不少見,當然出現頻率較高的還是在C代碼中。typedef和#define有些相似,但更多的是不同,特別是在一些複雜的用法上,就完全不同了。      1.宏定義(#define)  

原创 【C語言】整型數字的處理

    C程序設計中有一道很經典的題目,如下:    給出一個不多於5位的正整數,要求:  (1)求出它是幾位數;  (2)分別輸出每一位數字;  (3)按逆序輸出各位數字,例如原數爲321,應輸出123。    根據上邊的題目,可以總結

原创 【C語言】進制

    在IT筆試過程中經常會碰到有關進制的題目,下面以阿里的筆試題爲例:    假如在n進制下,下面的等式成立,567*456=150216,n的值是()    A.9        B.10       C.12       D.18