1. 程式人生 > >SDUT-Java——傳說中的資料結構

SDUT-Java——傳說中的資料結構

傳說中的資料結構 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

AC程式碼:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner mi = new Scanner(System.in);
		while (mi.hasNext()) {
			int n = mi.nextInt();
			int i = 0;
			int[] a = new int[n + 1];
			while (n > 0) {
				n--;
				String str = mi.next();
				if (str.compareTo("push") == 0) {
					a[i++] = mi.nextInt();
				} else if (str.compareTo("top") == 0) {
					if (i == 0) {
						System.out.println("empty");
					} else {
						System.out.println(a[i - 1]);
					}
				} else if (str.compareTo("pop") == 0) {
					if (i == 0) {
						System.out.println("error");
					} else {
						i--;
					}
				}
			}
			System.out.println();
		}
		mi.close();
	}
}
/*compareTo()——方法用於將 Number 物件與方法的引數進行
比較。可用於比較 Byte, Long, Integer等。該方法用於兩個相同
資料型別的比較,兩個不同型別的資料不能用此方法來比較。*/

—————— 餘生還請多多指教!