SDUT-Java——傳說中的資料結構
阿新 • • 發佈:2018-12-11
傳說中的資料結構 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等。該方法用於兩個相同 資料型別的比較,兩個不同型別的資料不能用此方法來比較。*/
—————— 餘生還請多多指教!