堆疊的使用

2021-08-22 07:14:16 字數 955 閱讀 2204

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

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

對於每組測試資料,根據其中的命令字元來處理堆疊;並對所有的'a』操作,輸出當時棧頂的值,每個佔據一行,如果當時棧為空,則輸出'e』。當每組測試資料完成後,輸出乙個空行。

5

p 75oo

p 60a7

aop 73

p 49ao

p 30

60

e49

本題是常規棧操作題,按照題目要求讀取字元,根據字元做出操作,有幾點需要注意的地方:

1、每組資料第一行為int型,表示操作次數,當為0時要停止。

2、當用%c讀取每行的第乙個運算元時,前面要加空格如 scanf(「 %c」,&s);這樣可以過濾掉之前輸入流中的空格或者換行。如果使用%s讀資料就不用這麼麻煩,只要考慮字串第一位的值即可。

3、需要著重注意,當棧為空時不能進行退棧操作,會發生錯誤,每次進行退棧時要檢查棧是否為空,只有當不為空時才能退棧。

#include#includeusing namespace std;

stackbuf;//stack() 宣告乙個空棧

int main()

{ int n,i;

char s[10];

while(scanf("%d",&n)!=eof&&n)

{ while(!buf.empty())//empty 測試棧是否為空;

buf.pop();//pop 彈出棧中的元素,如果棧為空,結果未定義

int data;

for(i=0;i

堆疊的使用

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

堆疊的使用

一道acm的堆疊題,幾乎讓我複習了一晚上的資料結構,果斷ac了,上 題目描述 堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。輸入 對於每組測試資料,第一行是乙個正整數 n,0 輸...

堆疊的使用

一道acm的堆疊題,幾乎讓我複習了一晚上的資料結構,果斷ac了,上 題目描述 堆疊是一種基本的資料結構。堆疊具有兩種基本操作方式,push 和 pop。push乙個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆疊的使用。輸入 對於每組測試資料,第一行是乙個正整數 n,0 輸...