μ€ν(Stack)
μ€νμ λ°μ΄ν°λ₯Ό μΌμμ μΌλ‘ μ μ₯νκΈ° μν μλ£κ΅¬μ‘°λ‘, κ°μ₯ λμ€μ λ€μ΄μ¨ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λκ°λ νμ
μ μΆ(LIFO: Last In First Out) ꡬ쑰λ₯Ό κ°μ§λ€.
ν΅μ¬ μμ
μμ | μ€λͺ
|
push() | μ€νμ λ°μ΄ν°λ₯Ό μΆκ°νλ μ°μ° |
pop() | μ€νμμ μ΅μμ λ°μ΄ν°λ₯Ό μ κ±°νκ³ λ°ννλ μ°μ° |
peek() | μ€νμ μ΅μμ λ°μ΄ν°λ₯Ό μ‘°ννλ μ°μ° |
isEmpty() | μ€νμ΄ λΉμ΄μλμ§ νμΈνλ μ°μ° |
size() | μ€νμ μ μ₯λ λ°μ΄ν° κ°μλ₯Ό λ°ννλ μ°μ° |
μ§μ ꡬν μμ μ½λ
public class Stack<T> {
private Object[] elements;
private int size;
public Stack(int capacity) {
elements = new Object[capacity];
size = 0;
}
public void push(T item) {
if (size == elements.length) {
throw new IllegalStateException("Stack is full");
}
elements[size++] = item;
}
@SuppressWarnings("unchecked")
public T pop() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
T item = (T) elements[--size];
elements[size] = null;
return item;
}
@SuppressWarnings("unchecked")
public T peek() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return (T) elements[size - 1];
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
}
Java
볡μ¬
β’
μ€νμ½λ
public class Main {
public static void main(String[] args) {
Stack<String> stack = new Stack<>(10);
stack.push("μλ©λ¦¬μΉ΄λ
Έ");
stack.push("μΉ΄νλΌλΌ");
stack.push("μΉ΄νλͺ¨μΉ΄");
for (int i = 0; i < 3; i++) {
String item = stack.pop();
System.out.println(item);
}
System.out.println();
}
}
Java
볡μ¬
Java Collection Framework μ¬μ© μμ
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// λ°μ΄ν° μΆκ°
stack.push("First");
stack.push("Second");
stack.push("Third");
System.out.println("Stack size: " + stack.size()); // 3
System.out.println("Top element: " + stack.peek()); // Third
// λ°μ΄ν° μ κ±°
while (!stack.isEmpty()) {
System.out.println("Popped: " + stack.pop());
}
}
}
Java
볡μ¬