Search

μŠ€νƒ

μŠ€νƒ(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
볡사