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)
7 return n;
8 }
11、漢諾塔問題。
1void tower(n,x,y,z)
8}
12、三柱漢諾塔最小步數。
1 int f3(n)
8 f3[n] = 2 * f3(n - 1 ) + 1 ;
9 return f3[n];
10 }
11 }
四柱漢諾塔最小步數。
1int f4(n)
7 min=2*f4(1)+f3(n-1);
8 for(int i=2;i b.value)else
16 }
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) else
12 p = p.next;
13 }
14 if (a) p.next = a;
15 elseif(a1) p.next = a1;
16 return q.next;
17 }
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)
12 ++ j;
13 }
14 }
15 }
22、面試過程中我還遇到了下面幾題:
1、如何刪除鍊錶的倒數第m的元素?我的方法是先用pre指標從煉表頭開始步進m,新建pst節點next指標指向頭節點,cur指標指向頭節點,然後pre,cur,post三個指標一起步進,當pre指向鍊錶結尾的時候cur指向倒數第m個元素,最後利用pst指標刪除cur指向元素。
2、如何判斷乙個字串是對稱的?如a,aa,aba。設定頭尾指標同時向中間比較靠齊直至相遇。
3、如何利用2函式找出乙個字串中的所有對稱子串?以子串頭指標和尾指標為迴圈變數設定兩個巢狀的迴圈以找出所有子串,對每個子串應用2函式。
該系列題目由
微軟的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 ...
微軟的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 ...
微軟的22道資料結構演算法
1 反轉乙個鍊錶。迴圈演算法。typedef void reverse listnode phead if null phead return listnode pcurrent phead pnext listnode ppre phead listnode ptmp ppre pnext nul...