微軟的22道資料結構演算法面試題(含答案)
1、反轉乙個鍊錶。迴圈演算法。
1 list reverse(list l)
13 return tmp;
14 }
2、反轉乙個鍊錶。遞迴演算法。
1 list resverse(list l)
8 return n;
9 }
3、廣度優先遍歷二叉樹。
1 void bst(tree t)
11 }
1class node
5class queue else
17 }
18 public tree deque() else
26}4、輸出乙個字串所有排列。注意有重複字元。
1char p;
2void perm(char s, int i, int n)
6 return *str1-*str2;
7}10、求乙個整形中1的位數。
1 int f( int x)
11、漢諾塔問題。
1void tower(n,x,y,z)
8}12、三柱漢諾塔最小步數。
1 int f3(n)
四柱漢諾塔最小步數。
1int f4(n)
17 m=head.next;
18}14、乙個陣列,下標從0到n,元素為從0到n的整數。判斷其中是否有重複元素。
1int hasduplicate(int a, int n)
8}17、兩個鍊錶,一公升一降。合併為乙個公升序鍊錶。
1 list merge(list a, list d)
18、將長型轉換為字串。
1char* ltoa(long l)
5 char* str=(char*)malloc(n*sizeof(char));
6 int j=0;
7 while(l)
12 return str;
13}19、用乙個資料結構實現
1 if (x == 0) y = a;
2 else y = b;
1 j = ;
2 y=j[x];
20、在雙向鍊錶中刪除指定元素。
1void del(list head, list node)
9 if(!cur) return;
10 list post = cur.next;
11 pre.next=cur.next;
12 post.last=cur.last;
13 return;
14}21、不重複地輸出公升序陣列中的元素。
1 void outputunique( char str, int n)
22、面試過程中我還遇到了下面幾題:
1、如何刪除鍊錶的倒數第m的元素?我的方法是先用pre指標從煉表頭開始步進m,新建pst節點next指標指向頭節點,cur指標指向頭節點,然後pre,cur,post三個指標一起步進,當pre指向鍊錶結尾的時候cur指向倒數第m個元素,最後利用pst指標刪除cur指向元素。
2、如何判斷乙個字串是對稱的?如a,aa,aba。設定頭尾指標同時向中間比較靠齊直至相遇。
3、如何利用2函式找出乙個字串中的所有對稱子串?以子串頭指標和尾指標為迴圈變數設定兩個巢狀的迴圈以找出所有子串,對每個子串應用2函式。
資料結構 演算法面試題
資料結構 演算法面試100題 摘自csdn,作者july 高天的日誌 1.把二元查詢樹轉變成排序的雙向鍊錶 樹 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 1...
22道資料結構演算法面試題
微軟的22道資料結構演算法面試題 含答案 1 反轉乙個鍊錶。迴圈演算法。1 list reverse list l 13 return tmp 14 2 反轉乙個鍊錶。遞迴演算法。1 list resverse list l 8 return n 9 3 廣度優先遍歷二叉樹。1 void bst t...
資料結構演算法設計筆試面試題
字串 1 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a b c所能排列出來的所有字串abc acb bac bca cab和cba。2 有乙個由大小寫組成的字串,現在需要對他進行修改,將其中的所有小寫字母排在大寫字母的前面 大寫或小寫字母之間不要求保持原來次序 如有...