利用除基取餘法配合棧的後進先出特性,將十進制轉為任意進制。餘數先產生為低位,入棧後出棧即為正確順序。
void conversion(int N, int B) {
stack S;
while (N) {
S.push(N % B);
N /= B;
}
while (!S.empty()) {
printf("%d", S.top());
S.pop();
}
}
維護兩個棧:運算符棧 OPTR 和 操作數棧 OPND。根據運算符優先級關係(<、>、=)決定移入、歸約或脫括號。

男女分別排隊,隊頭配對出隊。若人數不等,長隊剩餘者等待下一輪。典型的先進先出(FIFO)場景。
void DancePartner(Person dancer[], int num) {
queue Mdancers, Fdancers;
for (int i = 0; i < num; i++) {
if (dancer[i].sex == 'F') Fdancers.push(dancer[i]);
else Mdancers.push(dancer[i]);
}
while (!Fdancers.empty() && !Mdancers.empty()) {
Person f = Fdancers.front(); Fdancers.pop();
Person m = Mdancers.front(); Mdancers.pop();
printf("%s %s\n", f.name, m.name);
}
// 輸出剩餘等待者信息...
}
| 場景 | 核心特徵 | 適用結構 |
|---|---|---|
| 進制轉換 | 逆序輸出 | 棧 (LIFO) |
| 表達式求值 | 運算符優先級、括號匹配 | 雙棧 (運算符+操作數) |
| 舞伴配對 | 先到先服務、隊列管理 | 隊列 (FIFO) |
| 瀏覽器前進/後退 | 雙向歷史記錄 | 雙棧 |
| 任務調度 | 公平排隊、優先級 | 隊列/優先級隊列 |
棧解決「最後處理最先到達」的問題,隊列解決「最先處理最先到達」的問題,是算法設計中最基礎也最強大的兩種線性結構。