微軟面試題 資料結構

2021-05-22 20:46:35 字數 984 閱讀 5746

分析下面的程式,寫出結果。

void main( );

printf(x);

}本來這個程式的**不是很長,而且題意也很清楚,先把元素壓棧,然後再出棧即可得到結果:stack

剛開始分析到pop(s,x);時,不明白怎麼會從棧中彈出x,按照棧「先進後出」的原則怎麼都不可能把元素x彈出棧,......在百思其解不可得時候,終於發現其中的奧秘了:在程式執行到push(s,y);pop(s,x);後x=k,然後入棧t,接著x=t,在入棧s,到此程式執行到push(s,'s');接著用乙個迴圈出棧,得到stac,最後在輸入乙個k,得到最後的結果:

stack

josephus(約瑟夫)問題

有n個人圍成乙個圈,從第1個人開始報數,數到第m個人,讓他出局;然後從出局的下乙個人重新開始報數,數到第m個人,再讓他出局,……,如此反覆直到剩下乙個人,問此人編號為幾?

或:有n個人圍成乙個圈,從第k個人開始報數,數到第m個人,讓他出局;然後從出局的下乙個人重新開始報數,數到第m個人,再讓他出局,……,如此反覆直到所有人出列,由此產生乙個出隊編號的序列。

1、陣列解法

#include

#include

using namespace std;

const int n=11, m=3;

int main()

;int main()

q->next=p; //構成乙個"環"

q=p;

while(q->next!=q)

else

}cout<<"最後乙個獲勝者的編號是:"

while(q->next!=q)

p->next=q->next;

delete q;

q=p->next;}

微軟的22道資料結構演算法面試題(含答案)

2010-05-11 16:45

資料結構——表示式求值(堆疊)

2010-05-18 21:29

資料結構微軟面試題

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 t...

資料結構 演算法面試題

資料結構 演算法面試100題 摘自csdn,作者july 高天的日誌 1.把二元查詢樹轉變成排序的雙向鍊錶 樹 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 1...