1. 程式人生 > >堆疊的使用 (C語言 陣列模擬堆疊)

堆疊的使用 (C語言 陣列模擬堆疊)

題目描述

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

輸入描述

對於每組測試資料,第一行是一個正整數 n,0<n<=10000(n=0 結束)。而後的 n 行,每行的第一個字元可能是'P’或者'O’或者'A’;如果是'P’,後面還會跟著一個整數,表示把這個資料壓入堆疊;如果是'O’,表示將棧頂的值 pop 出來,如果堆疊中沒有元素時,忽略本次操作;如果是'A’,表示詢問當前棧頂的值,如果當時棧為空,則輸出'E'。堆疊開始為空。

輸出描述

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

輸入樣例

5
P 75
O
O
P 60
A
7
A
O
P 73
P 49
A
O
P 3
0

輸出樣例

60

E
49

 

#include<stdio.h>
#include<string.h>

int main() {
	int n,m,j,k,i,T,x,top;
	char s[10],a[3000];

	while (~scanf("%d",&n)) 
	{
		if (n==0) break;
		top = -1;
		while (n--) 
		{
			getchar();
			scanf("%s",s);
			if (s[0]=='P') 
			{
				scanf(" %d",&x);
				top++;
				a[top] = x;
			} 
			else if (s[0]=='O') 
			{
				if (top>=0)
				top--;
			} 
			else if (s[0]=='A') 
			{
				if (top>=0)
					printf("%d\n",a[top]);
				else
					printf("E\n");
			} 
			else
				continue;
		}
		printf("\n");
	}

	return 0;
}