ποΈ μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦/μκ³ λ¦¬μ¦,μλ£κ΅¬μ‘°
[μ€ν] λ°°μ΄ κΈ°λ° μ€νκ³Ό μ°κ²° 리μ€νΈ κΈ°λ° μ€ν
OR15A
2023. 11. 21. 14:34
Stack
- μ€νμ νμ μ μΆμ΄λΌλ κ·μΉμ λ°λΌ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ κ·Όνλ μ ν μλ£κ΅¬μ‘°
- μ¬μ© μμ : μΉ λΈλΌμ°μ μ λ€λ‘ κ°κΈ° κΈ°λ₯, λ¬Έμμ΄ μμ, κ΄νΈ κ²μ¬, μ€ν μ·¨μ κΈ°λ₯, μ¬κ· ν¨μ νΈμΆ
μ€νμ κ°λ
- μ€νμ LIFO(Last In, First Out) λλ FILO(First In, Last Out) μμΉμ λ°λΌ μλνλ μλ£κ΅¬μ‘°
- μ΄ μμΉμ κ°μ₯ λ§μ§λ§μ μ½μ λ μμκ° κ°μ₯ λ¨Όμ μ κ±°λλ€λ κ²μ μλ―Έν¨
μ€ν μλ£κ΅¬μ‘°μ ADT(μΆμ λ°μ΄ν° νμ )
Push : μ€νμ 맨 μμ μμλ₯Ό μΆκ°ν©λλ€.
Pop : μ€νμ 맨 μμμ μμλ₯Ό μ κ±°νκ³ , κ·Έ μμλ₯Ό λ°νν©λλ€.
Peek : μ€νμ 맨 μ μμλ₯Ό λ°ννμ§λ§, μ κ±°νμ§ μμ΅λλ€.
IsEmpty : μ€νμ΄ λΉμ΄ μλμ§ νμΈν©λλ€.
λ°°μ΄ κΈ°λ° μ€ν (Stack ν΄λμ€)
ꡬμ±μμ
- λ΄λΆ λ°°μ΄ : λμ μΌλ‘ ν¬κΈ°κ° μ‘°μ λ μ μλ λ°°μ΄
- Top ν¬μΈν° : μ€νμ μ΅μμ μμ(λ§μ§λ§μΌλ‘ μΆκ°λ μμ)λ₯Ό κ°λ¦¬ν€λ ν¬μΈν° λλ μΈλ±μ€
- Capacity : λ΄λΆ λ°°μ΄μ μ΅λ ν¬κΈ°
- Size : νμ¬ μ€νμ μ μ₯λ μμμ μ
μλ μ리
- λ΄λΆ λ°°μ΄ : Stackμ λ΄λΆμ μΌλ‘ λμ λ°°μ΄μ μ¬μ©νμ¬ μμλ€μ μ μ₯. μ΄ λ°°μ΄μ Vector ν΄λμ€λ₯Ό ν΅ν΄ ꡬνλμ΄ μμΌλ©°, νμμ λ°λΌ λμ μΌλ‘ ν¬κΈ°κ° μ‘°μ λ¨
- Top μμ : μ€νμ μ΅μλ¨μ μλ μμ(κ°μ₯ μ΅κ·Όμ μΆκ°λ μμ)λ λ΄λΆ λ°°μ΄μ λ§μ§λ§ μμλ‘ κ΄λ¦¬
- Push μ°μ° : μλ‘μ΄ μμλ₯Ό μ€νμ 맨 μμ μΆκ°ν λ, μ΄ μμλ λ°°μ΄μ λ§μ§λ§μ μΆκ°. νμν κ²½μ° λ°°μ΄ ν¬κΈ° νμ₯
- Pop μ°μ° : μ€νμ 맨 μμμ μμλ₯Ό μ κ±°ν λ, λ°°μ΄μ λ§μ§λ§ μμκ° μ κ±°λκ³ λ°νλ¨
- Peek μ°μ° : μ€νμ μ΅μλ¨ μμλ₯Ό νμΈνλ €λ©΄, λ°°μ΄μ λ§μ§λ§ μμλ₯Ό μ‘°ν
μ£Όμ λ©μλ
- push(E item) : μ€νμ μ΅μλ¨μ μμλ₯Ό μΆκ°
- pop() : μ€νμ μ΅μλ¨μμ μμλ₯Ό μ κ±°νκ³ , κ·Έ μμλ₯Ό λ°ν. μ€νμ΄ λΉμ΄μλ κ²½μ° EmptyStackExceptionμ λμ§ μ μμ
- peek() : μ€νμ μ΅μλ¨ μμλ₯Ό λ°ννμ§λ§, μ κ±°νμ§ μμ. μ€νμ΄ λΉμ΄μλ κ²½μ° EmptyStackExceptionμ λμ§ μ μμ
- isEmpty() : μ€νμ΄ λΉμ΄μλμ§ μ¬λΆλ₯Ό λ°ν. λΉμ΄μμΌλ©΄ true, κ·Έλ μ§ μμΌλ©΄ falseλ₯Ό λ°ν
- size() : μ€νμ μ μ₯λ μμμ μλ₯Ό λ°ν
- search(Object o) : μ§μ λ κ°μ²΄κ° μ€νμμ μΌλ§λ λ©λ¦¬ μλμ§λ₯Ό λ°ν. μ€νμ μ΅μλ¨λΆν° κ°μ²΄κΉμ§μ 거리λ₯Ό 1λ‘ μμνμ¬ κ³μ°. κ°μ²΄κ° μ€νμ μμΌλ©΄ -1μ λ°ν
- elementAt(int index) : μ€νμμ μ§μ λ μΈλ±μ€μ μλ μμλ₯Ό λ°ν
- capacity() : μ€νμ νμ¬ μ©λμ λ°ν. μ΄λ μ€ν λ΄λΆμ λ°°μ΄μ΄ λ΄μ μ μλ μμμ μ΅λ μλ₯Ό λνλ
- ensureCapacity(int minCapacity) : μ€νμ΄ μ΅μν μ§μ λ μ©λμ κ°λλ‘ ν¨
- trimToSize() : μ€νμ μ©λμ νμ¬ μ€ν ν¬κΈ°μ λ§κ² μ‘°μ . λΆνμν λ©λͺ¨λ¦¬ μ¬μ©μ μ€μΌ μ μμ
μ°κ²° 리μ€νΈ κΈ°λ° μ€ν (Deque μΈν°νμ΄μ€)
ꡬμ±μμ
- λ Έλ: κ° μμλ λ Έλλ‘ νν. λ Έλλ λ°μ΄ν°μ λ€μ λ Έλμ λν μ°Έμ‘°(ν¬μΈν°)λ₯Ό ν¬ν¨
- ν€λ ν¬μΈν°: μ€νμ μ΅μμ μμ(맨 μ²μ λλ λ§μ§λ§μ μΆκ°λ μμ)λ₯Ό κ°λ¦¬ν€λ ν¬μΈν°
- Size: νμ¬ μ€νμ μ μ₯λ μμμ μ
μλ μ리
- λ Έλ κΈ°λ° κ΅¬μ‘°: μ€νμ κ° μμλ μ°κ²° 리μ€νΈμ λ Έλλ‘ νν. κ° λ Έλλ λ°μ΄ν°μ λ€μ λ Έλλ₯Ό κ°λ¦¬ν€λ μ°Έμ‘°λ₯Ό κ°μ§
- ν€λλ₯Ό μ¬μ©ν μ°μ°: μ€ν μ°μ°μ μ°κ²° 리μ€νΈμ ν€λ(λλ ν μΌ)μμ μνλ©λλ€. μλ‘μ΄ μμλ 리μ€νΈμ ν€λμ μΆκ°λλ©°, ν€λμμ μ κ±°λ©λλ€.
- Push μ°μ°: μλ‘μ΄ μμλ₯Ό μ€νμ 맨 μμ μΆκ°ν λ, μ°κ²° 리μ€νΈμ ν€λμ μ λ Έλλ₯Ό μΆκ°
- Pop μ°μ°: μ€νμ 맨 μμμ μμλ₯Ό μ κ±°ν λ, μ°κ²° 리μ€νΈμ ν€λ λ Έλλ₯Ό μ κ±°νκ³ κ·Έ λ°μ΄ν°λ₯Ό λ°ν
- Peek μ°μ°: μ€νμ μ΅μλ¨ μμλ₯Ό νμΈν λ, μ°κ²° 리μ€νΈμ ν€λ λ Έλμ λ°μ΄ν°λ₯Ό μ‘°ν
μ£Όμ λ©μλ
- addFirst(E item) / offerFirst(E item): μ€νμ μ΅μλ¨μ μμλ₯Ό μΆκ° (ArrayDequeμμ μ¬μ©)
- removeFirst() / pollFirst(): μ€νμ μ΅μλ¨μμ μμλ₯Ό μ κ±°νκ³ , κ·Έ μμλ₯Ό λ°ν
- peekFirst(): μ€νμ μ΅μλ¨ μμλ₯Ό λ°ννμ§λ§, μ κ±°νμ§ μμ
- isEmpty(): μ€νμ΄ λΉμ΄μλμ§ μ¬λΆλ₯Ό λ°ν. λΉμ΄μμΌλ©΄ true, κ·Έλ μ§ μμΌλ©΄ falseλ₯Ό λ°ν
- size(): μ€νμ μ μ₯λ μμμ μλ₯Ό λ°ν
- iterator() : λ°ν¬μ μμλ€μ μννλ μ΄ν°λ μ΄ν°λ₯Ό λ°ν
- descendingIterator() : λ°ν¬μ μμλ€μ μμμΌλ‘ μννλ μ΄ν°λ μ΄ν°λ₯Ό λ°ν
λ°°μ΄ κΈ°λ° μ€ν vs μ°κ²° 리μ€νΈ κΈ°λ° μ€ν
- μ±λ₯ μ°¨μ΄
- λ°°μ΄ κΈ°λ°μ λλ€ μ‘μΈμ€κ° λΉ λ₯΄μ§λ§ ν¬κΈ° μ‘°μ μ λΉμ©μ΄ λλλ€.
- μ°κ²° 리μ€νΈ κΈ°λ°μ μμ μΆκ° λ° μ κ±°κ° λΉ λ₯΄μ§λ§ λλ€ μ‘μΈμ€κ° λ립λλ€.
- μ©λ
- λ°°μ΄ κΈ°λ°μ ν¬κΈ° λ³λμ΄ μ κ³ , λΉ λ₯Έ μΈλ±μ€ κΈ°λ° μ κ·Όμ΄ νμν λ μ ν©ν©λλ€.
- μ°κ²° 리μ€νΈ κΈ°λ°μ μμ£Ό ν¬κΈ°κ° λ³νκ±°λ λμμλ§ μμ μ΄ μΌμ΄λ λ μ 리ν©λλ€.
μ€νμ μ₯μ κ³Ό λ¨μ
- μ₯μ
- κ°λ¨νκ³ μ¬μ©νκΈ° μ½μ΅λλ€.
- λ°μ΄ν°μ μμκ° μ€μν κ²½μ°μ μ μ©ν©λλ€.
- λ¨μ
- ν¬κΈ°κ° μ νμ μΌ μ μμ΅λλ€ (νΉν λ°°μ΄ κΈ°λ°).
- μ€κ° μμμ λν μ κ·Όμ΄ λΉν¨μ¨μ μ λλ€.
μ°Έκ³ μλ£ : γμ½κ² λ°°μ°λ μλ£κ΅¬μ‘° with μλ°γ