傳說中的數據結構
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
在大學裏學習了一個學期了,大家大都對所學的專業有了基本的瞭解。許多同學也已經知道了到大二要開一門課叫做《數據結構》,那麼今天給你們提前講一下一個最簡單的數據結構:棧。 棧的基本操作有3種:push,pop,top。
例如,給你一個數列:1 2 3 4
push:向棧中加入一個數,比如push 5,數列就變成1 2 3 4 5。
pop:從棧中刪除最後面的數,比如 pop,數列就變成1 2 3。(數列變化,但是不輸出。如果棧是空的,即不能 pop 操作,那就輸出 error ,但是接下來的操作還是要繼續的)。
top:找出棧最後面的數,比如 top ,你就要輸出4。(如果棧中沒有數的話,即不能 top 操作,那就輸出 empty)。
然後,你們可以看出來了吧,其實棧就是一個先進後出(越先進去的元素越後面出來)的數據結構,很簡單吧,下面要檢驗下你們的學習效果了。
Input
輸入包含多組測試數據.
每組數據的第一行爲一個整數 T(1 <= T <= 1000 ),接下來 T 行爲對棧的操作。
Output
如果操作是top,那麼輸出最後面的數,如果棧中沒有數的話,那就輸出“empty”(不含引號)。
如果操作是pop且棧是空的,那麼輸出 “error”(不含引號)。
在每組測試數據的最後多加一次換行。
Sample Input
8
push 1
push 2
push 3
push 4
top
pop
top
pop
3
push 1
pop
top
Sample Output
4
3
empty
Hint
Source
qinchuan
//next()不會吸取字符前/後的空格/Tab鍵,只吸取字符,開始吸取字符(字符前後不算)直到遇到空格/Tab鍵/回車截止吸取;
//nextLine()吸取字符前後的空格/Tab鍵,回車鍵截止。
//char c=s.charAt(i);
import java.util.*;
public class Main1{
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
int []a = new int[1100];
int num,t;
String str;
while(in.hasNext())
{
num = -1;
t = in.nextInt();
while(t-->0)
{
str = in.next();
if(str.compareTo("push")==0)
{
a[++num]=in.nextInt();
}
else if(str.compareTo("pop")==0)
{
if(num == -1)
System.out.println("error");
else num--;
}
else if(str.compareTo("top")==0)
{
if(num == -1)
{
System.out.println("empty");
}
else System.out.println(a[num]);
}
}
System.out.println();
}
in.close();
}
}