μŠ€νƒ STACK (JAVA)

횽·2024λ…„ 8μ›” 19일
0

algorithm&data-structure

λͺ©λ‘ 보기
9/17

πŸ“ STACK μ΄λž€?

  • 데이터λ₯Ό μŒ“μ•„ 올린 ν˜•νƒœμ˜ μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • 데이터λ₯Ό ν•˜λ‚˜μ”©λ§Œ λ„£κ³  λΊ„ 수 μžˆλ‹€.
  • 단방ν–₯ μž…μΆœλ ₯ ꡬ쑰 : λ°μ΄ν„°μ˜ λ“€μ–΄μ˜€λŠ” λ°©ν–₯κ³Ό λ‚˜κ°€λŠ” λ°©ν–₯이 κ°™λ‹€.
    -> LIFO ν›„μž…μ„ μΆœμ΄λ‹€.

1. ν›„μž…μ„ μΆœ

: Last In, First Out (LIFO)둜 λ‚˜μ€‘μ— μ‚½μž…λœ 것이 λ¨Όμ € μ‚­μ œλœλ‹€. (STACK μŠ€νƒ)
<->
μ„ μž… μ„ μΆœ : First In, First Out (FIFO)λŠ” λ¨Όμ € μ‚½μž…λœ 것이 λ¨Όμ € μ‚­μ œλœλ‹€. (QUEUE 큐)


2. stack overflow & Underflow

  • Overflow : μŠ€νƒμ˜ 크기만큼 데이터가 가득 μžˆμ–΄ 데이터λ₯Ό 넣지 λͺ»ν•  λ•Œ λ°œμƒν•œλ‹€
  • Underflow : μŠ€νƒμ΄ λΉ„μ–΄ μžˆλŠ” μƒν™©μ—μ„œ 데이터λ₯Ό λΉΌλ €κ³  ν•  λ•Œ λ°œμƒν•œλ‹€.

3. μŠ€νƒ λ©”μ„œλ“œ

  • push(data) : μŠ€νƒμ— 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • pop() : μŠ€νƒμ˜ κ°€μž₯ μœ—λΆ€λΆ„μ— μžˆλŠ” 데이터λ₯Ό μ œκ±°ν•œλ‹€.
  • size() : μŠ€νƒμ˜ 크기λ₯Ό λ°˜ν™˜ν•œλ‹€.
  • peek() : μŠ€νƒ κ°€μž₯ μœ— 뢀뢄에 μžˆλŠ” 데이터λ₯Ό λ°˜ν™˜ν•œλ‹€.
  • isEmpty(): μŠ€νƒμ΄ λΉ„μ–΄ μžˆμ„ λ•Œμ—λŠ” trueλ₯Ό λ°˜ν™˜ν•˜κ³ , λΉ„μ–΄μžˆμ§€ μ•Šμ„ λ•Œμ—λŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€.
  • search(data) : dataκ°€ topμ—μ„œλΆ€ν„° λͺ‡ λ²ˆμ§Έμ— μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό λ°˜ν™˜ν•œλ‹€. μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ -1을 λ°˜ν™˜ν•œλ‹€.

4. μŠ€νƒ κ΅¬ν˜„ (+μ„ μ–Έ) JAVA

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        stack.push(3); // μŠ€νƒμ— 3 μ‚½μž…
        stack.pop(); // μŠ€νƒμ—μ„œ 3 λ°˜ν™˜
    }
}



0개의 λŒ“κΈ€