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)
8 while(isdigit(*p))
12 if(!p) return m*l;
13 else return error;
14}
6
、判斷乙個鍊錶是否有迴圈。
1 int isloop(list l)
7 if ( ! s) return - 1 ;
8 else reutrn 1 ;
9 }
-----------
1int isloop(list l)
8 if(p=l) return 1;
9 return 0;
10}
實際上,在我的面試過程中,還問到了不破壞結構的其他演算法。
我的答案是從煉表頭開始遍歷,如果節點
next
指標指向自身,則迴圈存在;否則將
next
指標指向自身,遍歷下乙個節點。直至
next
指標為空,此時鍊錶無迴圈。
7
、反轉乙個字串。
1 void reverse( char * str)
10 }
8
、實現strstr
函式。
1int strstr(char str, char par)else
12 }
13 if(!str[j]) return i-strlen(par);
14 else return -1;
15}
9
、實現strcmp
函式。
1int strcmp(char* str1, char* str2)
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;i13
、在乙個鍊錶中刪除另乙個鍊錶中的元素。
1void delete(list m, list n) else if(a.value > 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 反轉乙個鍊錶。迴圈演算法。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...