原创 多線程與多進程服務器以及池的概念

1,多線程服務器 mul_pth_server.c中代碼: #include <pthread.h> //不要忘記了 #include <stdlib.h> #include <stdio.h> #include <signal.h>

原创 Linux shell之eval、``與$()

eval、``、$()是Linux Shell下,三種個功能類似的命令,都可以用來命令替換。 特別需要注意的是第二個` `,這兩個字符不是單引號,是反引號,在標準美國鍵盤上的ESC鍵下面,在字符1左邊,在TAB鍵上面的那個鍵,要特別留心。

原创 17_7_15:判斷鏈表是否有環+求環的長度+求環的入口。設計不能被繼承的類,只能堆/棧上創建對象的類

1.【基礎題】–判斷鏈表是否帶環?若帶環求環的長度?若帶環求環的入口點?並計算以上每個問題的時間複雜度? 2.【附加題】–1.設計一個類不能被繼承 2.設計一個類只能在堆上創建對象。 3.設計一個類只能在棧上創建對象。 ps:以

原创 17_7_20:元素入棧出棧的合法性檢測

題目描述: 元素出棧、入棧順序的合法性。如:入棧的序列(1,2,3,4,5),出棧序列爲(4,5,3,2,1),則合法。 入棧的序列(1,2,3,4,5),出棧序列爲(4,5,2,3,1),則不合法。 難點分析: 在出棧、入

原创 17_7_20:計算一個整數二進制位中1的個數。

題目描述: 計算一個整數二進制位中1的個數。要求效率儘可能的高。且能正確求正數和負數的二進制中1的個數。 難點分析: 如果,要判斷每個位上的0或1。利用移位,然後和1相與,循環16次或32次或64次等等,這樣不管正負,效率也還

原创 17_7_21 二叉樹的層序遍歷

題目要求: 實現一顆二叉樹的層序遍歷 難點分析: 沒有要求,前序,或者中序、後序等常規一路走到底的遍歷。 而是,按行從左到右遍歷。第一次遇見,可能有點不適應。 需要想個辦法,記錄每一行應該走的順序。 思路: 可以利用

原创 17_7_13:合併兩個有序鏈表。實現1+2+3+...+n,不使用常規方法

1.【基礎題】–合併兩個有序鏈表,合併以後的鏈表依舊有序。 2.【附加題】–實現1+2+3…+n,要求不能使用乘除法、循環、條件判斷、選擇相關的關鍵字。(這個題有多種解法,大家可以儘量去思考,這個題最優的解法時間複雜度是O(1

原创 17_7_22 一個數組中有一個數字的次數超過了數組的一半,求出這個字符。

題目描述: 一個數組中有一個數字的次數超過了數組的一半,求出這個字符。如:int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超過一半的數字是2。 難點分析: 如果,通過O(N)的時間複雜度,通過兩層循環,

原创 鏈表只翻轉一部分

題目描述: 鏈表翻轉。給出一個鏈表和一個數k,比如鏈表1→2→3→4→5→6,k=2,翻轉後2→1→4→3→6→5,若k=3,翻轉後3→2→1→6→5→4,若k=4,翻轉後4→3→2→1→5→6,用程序實現Node* Rotat

原创 17_7_17:刪除一個無頭單鏈表的非尾節點。從尾到頭打印單鏈表

【基礎題】 1.刪除一個無頭單鏈表的非尾節點 2.從尾到頭打印單鏈表 首先,給出節點信息 #include <iostream> #include <cassert> typedef int DataType; typed

原创 二叉樹相關面試題彙總

說明:本博文在以前面試題的基礎上彙總了二叉樹的常見面試題。 二叉樹中封裝的功能有: void _CreateTree(Node*& pRoot, const T array[], size_t size, size_t&

原创 17_7_14:逆置單鏈表+查找單鏈表的倒數第K個節點+非常規方法實現Add函數

1.【基礎題】–逆置/反轉單鏈表+查找單鏈表的倒數第k個節點,要求只能遍歷一次鏈表 2.【附加題】–實現一個Add函數,讓兩個數相加,但是不能使用+、-、*、/等四則運算符。ps:也不能用++、–等等 ** 1,基礎題: **

原创 17_7_17:複雜鏈表的複製

思路: 有兩種解決辦法: 第一種: 1,遍歷一次鏈表,構建一條新鏈表,只複製_data以及_next。 2,再次遍歷原來鏈表,獲取每次遍歷節點的_random,在一次循環中,再次遍歷鏈表。獲取_random指向的位置到頭結

原创 17_7_18:兩個棧實現一個隊列。兩個隊列實現一個棧

題目: 1,使用兩個棧實現一個隊列 2,使用兩個隊列實現一個棧 1,使用兩個棧實現一個隊列 思路: 根據棧的FILO性質,將數據,全部存入第一個棧中; 再將第一個棧中數據全部放入第二個棧中; 這樣,將數據從第二個棧中取

原创 二維數組中的查找

題目描述: 一個m*n的矩陣,從左到右從上到下都是遞增的,給一個數x,判斷x是否在矩陣中。要求效率儘可能的高。 難點分析: 一遍情況下,我們在二維數組中查找某一個元素,都是將數組遍歷一遍。此時時間複雜度爲O(M+N) 但是,