原创 用deque模擬棧解決八皇后問題

因爲棧stack的遍歷只能逐個pop,很麻煩,並且破壞了原來的棧,所以可以用deque來模擬棧。   #include "stdafx.h"  #include <iostream>  #include <deque>  #include 

原创 面試100題之17

題目:輸入一個鏈表的頭結點,反轉該鏈表,並返回反轉後鏈表的頭結點。鏈表結點定義如下: struct ListNode { int m_nKey;ListNode* m_pNext; }; 分析:通常在單鏈表的首元結點(存放第一個數據元素

原创 面試100題之18

題目:如果字符串一的所有字符按其在字符串中的順序出現在另外一個字符串二中,則字符串一稱之爲字符串二的子串。注意,並不要求子串(字符串一)的字符必須連續出現在字符串二中。請編寫一個函數,輸入兩個字符串,求它們的最長公共子串,並打印出最長公共子

原创 全排列

數字的全排列常見的是遞歸的方法。 #include "stdafx.h"  #include <iostream>  using namespace std;     int n = 0;    void output(int str[],

原创 字符串調整爲RGB的順序

題目:一個字符串只有‘R’、‘G’、‘B’組成,如何讓所有的‘R’出現在前面,所有的‘G’在中間,所有的‘B’在最後。 要求:要求空間複雜度爲O(1),只許遍歷一遍字符串數組 思路:維護三個遊標 i、j、k i 指向開始, j 指向尾部,用

原创 最小堆的調整、插入和刪除

今天看到一道面試題, 一個最小堆,也是完全二叉樹,用按層遍歷數組表示。   1.  求節點a[n]的子節點的訪問方式   2.  插入一節點的程序void add_element(int *a,int size,int val);  

原创 值傳遞與地址傳遞

      對於是值傳遞還是地址傳遞不能通過行參來判斷,當形參是指針時既有可能是值傳遞也有可能是地址傳遞,要畫圖分析,幾個例子如下   void Exchg1(int x, int y)    {    int tmp;    tmp=x;

原创 我的友情鏈接

51CTO博客開發會飛de樹

原创 單鏈表進行一元多項式求和

用帶頭結點的單鏈表 設兩個工作指針p和q,分別指向兩個單鏈表的開始節點,兩個多項式求和的實質上是對結點p的指數域和結點q的指數域進行比較。 (1)若p->exp<q->exp,則結點p應爲結果中的一個結點,將指針p後移。 (2)若p->ex

原创 字典序編碼與解碼的兩道題

如果將五筆的編碼按字典序排序,形成數組如下:a, aa, aaa, aaaa, aaab, aaac, ..., b, ba, baa, baaa, baab...yyyx, yyyy 其中a的索引是0,aa的索引是1,aaa的索引是2,a

原创 求兩個字符串的最長公共子字符串

子字符串和子串是有區別的,字符串要求是連續的,而子串則不用連續。 求最長公共子字符串的問題也可以用類似於求最長公共子串中矩陣遞推的方法,但是需要注意的是,當兩個字符串中某個位置字符不同時,需要將相應矩陣位置設爲0. 定義f(m, n)爲Xm

原创 程序員100題之19

題目:定義字符串的左旋轉操作:把字符串前面的若干個字符移動到字符串的尾部。如把字符串abcdef左旋轉2位得到字符串cdefab。請實現字符串左旋轉的函數。要求時間對長度爲n的字符串操作的複雜度爲O(n),輔助內存爲O(1)。 解法:字符串