μ€ν(Stack) μ΄λ?
μ€νμ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν μλ£κ΅¬μ‘°μ λλ€.
μ€νμ LIFO(Last In First Out / First In Last Out) μ΄λΌλ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
μ»΄ν¨ν°μμ κ°μ₯ λ§μ΄ μ¬μ©λλ μλ£κ΅¬μ‘°λΌκ³ ν΄λ 무방ν λ§νΌ λ§€μ° λ§μ΄ μ°μ΄λ μλ£κ΅¬μ‘°μ λλ€.
μ€λ§νΈν°μμ 'λ€λ‘ κ°κΈ°' λ²νΌμ λλ μ λ νμ¬ μ€ννκ³ μλ μ±μ΄ μ’ λ£λκ³ μ§μ μ μ±μ΄ λνλλλ° μ΄ λ μ¬μ©λλ κ²μ΄ μ€νμ λλ€.
μ€νμ ꡬ쑰μ μ¬μ©
μ€νμ λ§μ§λ§μ λ€μ΄μ¨ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λμ€κ² λ©λλ€.
μ€νμμ μ¬μ©λλ ν¨μλ‘λ λνμ μΌλ‘ pop / push / peek / isFull / isEmpty κ° μμ΅λλ€.
- Push() : μ€νμ κ°μ λ£λ ν¨μ
- Pop() : μ€νμ Top μμΉμ μλ λ°μ΄ν°λ₯Ό μΆλ ₯νλ ν¨μ
- Peek() : νΈμ¬μ κ°μ₯ λ§μ§λ§μ μ λ ₯λ κ°, μ¦ ν μμΉμ κ°μ νμΈνλ ν¨μ
- isFull() : μ€νμ΄ κ½ μ°Ύλμ§ νμΈνλ ν¨μ
- isEmpty() : μ€νμ΄ νμ¬ λΉμ΄μλμ§ νμΈνλ ν¨μ
νμ΄μ¬μΌλ‘ μ€ν νμ©νκΈ°
νμ΄μ¬μ κΈ°λ³Έμ μΌλ‘ μ€ν μλ£κ΅¬μ‘°λ₯Ό μ§μνμ§ μμ΅λλ€. κ·Έλμ 리μ€νΈλ₯Ό ν΅ν΄ μ€νμ ꡬνν μ μμ΅λλ€.
# μ€ν μλ£κ΅¬μ‘°
stack = []
for i in range(5):
stack.push(i)
print(stack)
print(stack.pop())
print(stack.pop())
print(stack)
appendλ μ€νμ pushμ κ°λ€κ³ 보면 λ©λλ€.
popμ ν΅ν΄ κ°μ₯ topμ μλ λ°μ΄ν°λ₯Ό λΊλλ€.
μλ°λ‘ μ€ν νμ©νκΈ°
package DataStructure;
import java.util.Stack;
import javax.lang.model.element.Element;
public class DataStructureStack {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();//push, pop, peek - μ΅κ·Όμ λ£μ κ° μΆλ ₯, empty, seach μ§μ
for(int i=1; i<=5 ; i++) {
stack.push(i);
System.out.println(stack.peek());
} //1, 2, 3, 4, 5 μΆλ ₯
stack.pop();
System.out.println("Pop()");
System.out.println(stack.peek()); //4μΆλ ₯
System.out.println(stack.search(3)); //2μΆλ ₯
System.out.println(stack.empty()); //falseμΆλ ₯
}
}
μλ°λ Stack ν΄λμ€λ₯Ό μ 곡ν©λλ€.