機試題 堆疊的使用

2021-09-25 02:40:09 字數 821 閱讀 7752

堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。

對於每組測試資料,第一行是乙個正整數 n,0示例1

3ap 5a4

p 3p 6

o a

e

53

為什麼使用字元陣列而不是單個字元?

問題現象:

當程式中存在多個scanf時,針對第乙個scanf的輸入,一般使用者會以空白字元(空格、換行、tab、換頁符)等結束。但若後面有乙個scanf(「%c」,&ch),則剛才輸入的空白字元會被此次的scanf讀入,因此空白字元也是乙個字元,此將導致ch為空。

原因解釋:

scanf的工作原理:(一般情況,即格式串中沒有其它字元)使用者的任何輸入將被儲存在緩衝之中,當有scanf時,scanf則從此緩衝佇列中讀取字元,直至遇到空白字元或者是此字元不可能是本次的輸入為止,並把此字元放回原佇列,此字元成為佇列的第乙個字元。當下一次scanf被呼叫時,將從第乙個字元讀取,若此時為%d,%f,%g,%e等資料格式串,則可跳過空白字元,直至出現數字為止;若此時為%c等字元(串)格式串,則會把空白字元讀入,並給此變數賦值。

#include int main()

else if( c[0] == 'p')

else if(c[0] == 'o')

}printf("\n");

}return 0;

}

吉林大學2011機試題 堆疊的使用

題目1108 堆疊的使用 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 8331 解決 2440 題目描述 堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。輸入 對於...

堆疊的使用

題目描述 堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。輸入 對於每組測試資料,第一行是乙個正整數 n,0 輸出 對於每組測試資料,根據其中的命令字元來處理堆疊 並對所有的 a ...

堆疊的使用

堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。對於每組測試資料,第一行是乙個正整數 n,0 對於每組測試資料,根據其中的命令字元來處理堆疊 並對所有的 a 操作,輸出當時棧頂的值...