簡単に例えて
「レゴブロックのようにデータを積み重ねたこと」
だと思えばいいと思います。
先に積んだブログは上に積んだブログを取り出す前には
出すことができません。
この塔にレゴブロックの代わりにデータが入っていればいいと思います。
下のイメージを見てください。
このイメージはWikiから持ってきました。
Pushは積むこと
Popは取り出すことを意味します。
Stackは簡単そうに見えて深くはいると難しいくなるアルゴリズムです。
コンピューターのさまざま方面で使われています。
今回はこのStackをJavaの配列を使ってコードを練ってみました。
import java.util.Scanner;
public class algo {
public static void main(String[] args) {
int count = 0;
int push = 0;
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int array[] = new int[size];
while(true) {
String value = sc.nextLine();
if (value.startsWith("push")) {
String temp = value.replace("push ", "");
push = Integer.valueOf(temp);
value = "push";
}
switch (value) {
case "push":
array[count] = push;
count++;
break;
case "pop":
System.out.println(array[count-1]);
count--;
array[count] = 0;
break;
case "size":
System.out.println(count);
break;
case "empty":
if (array[0] == 0) {
System.out.println("1");
} else {
System.out.println("0");
}
break;
case "top":
if (array[count-1] != 0 && count != 0) {
System.out.println(array[count-1]);
} else {
System.out.println("-1");
}
break;
}
}
}
}
댓글 없음:
댓글 쓰기