What-is-queue.md


κ°œλ…


λ¨Όμ € μ§‘μ–΄ 넣은 데이터가 λ¨Όμ € λ‚˜μ˜€λŠ” FIFO(First In First Out)ꡬ쑰둜 μ €μž₯ν•˜λŠ” 방식

μš©μ–΄


  • Front : 첫 번째 데이터

  • Rear : κ°€μž₯ λ§ˆμ§€λ§‰ 데이터

    front, rear의 μ΄ˆκΉƒκ°’ : -1

μ—°μ‚°


  • FIFO - First In First Out

  • Enqueue : 데이터λ₯Ό μ‚½μž…ν•˜λŠ” λ™μž‘

    • add(item) item을 리슀트의 끝뢀뢄에 μΆ”κ°€

      • rear = rear + 1 ν›„ item μΆ”κ°€

  • Dequeue : 데이터λ₯Ό μ‚­μ œν•˜λŠ” λ™μž‘

    • remove : 리슀트의 첫 번째 ν•­λͺ©μ„ 제거

      • front = front + 1

  • peek : νμ—μ„œ κ°€μž₯ μœ„μ— μžˆλŠ” ν•­λͺ©μ„ λ°˜ν™˜

  • isEmpty : 큐가 λΉ„μ–΄μžˆμ„ λ•Œ trueλ₯Ό λ°˜ν™˜

    • (front == rear) ? True : False

  • isFull : rear = n - 1

μ’…λ₯˜


μ„ ν˜•

linearqueueimage
  • 1차원 λ°°μ—΄μ˜ ν˜•νƒœλ‘œ μ΄λ£¨μ–΄μ ΈμžˆμŠ΅λ‹ˆλ‹€.

ν™˜ν˜•

μ„ ν˜• 큐의 문제점 linearqueueproblemimage

  • front와 rear의 값이 계속 μ¦κ°€ν•˜κΈ° λ•Œλ¬Έμ— μ–Έμ  κ°€λŠ” λ°°μ—΄μ˜ 끝에 λ„λ‹¬ν•˜κ²Œ 되고 λ°°μ—΄μ˜ μ•žλΆ€λΆ„μ΄ λΉ„μ–΄μžˆλ”λΌλ„ μ‚¬μš©ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

  • λ”°λΌμ„œ 원(ν™˜)ν˜• 큐가 λ‚˜μ˜€κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

circularqueueimage
  • front μ•žμ˜ 남은 곡간을 μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λŠ” μ„ ν˜•νμ˜ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλœ μ›ν˜•νλŠ” λ°°μ—΄μ˜ μ‹œμž‘κ³Ό 끝이 이어져 μžˆλŠ” κ²ƒμ²˜λŸΌ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ (rear+1)%arraysize의 ν˜•μ‹μœΌλ‘œ 포인터λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

κ΅¬ν˜„


μ„ ν˜•ν

μ›ν˜• 큐

μ‹€μ œ μ½”λ”©ν…ŒμŠ€νŠΈμ—μ„œλŠ” collections λͺ¨λ“ˆμ˜ dequeλ₯Ό μ‚¬μš©ν•˜μž!

Last updated