Queue

QueueλŠ” FIFO(First In First Out), μ„ μž… μ„ μΆœ λ°©μ‹μœΌλ‘œ ν•­λͺ©μ„ μ €μž₯ν•˜λŠ” 데이터 ꡬ쑰이닀.

λͺ…ν’ˆ λ§€μž₯에 λͺ…ν’ˆμ„ μ‚¬λŸ¬ μ‚¬λžŒλ“€μ΄ 쀄을 μ„œ μžˆλ‹€. μƒˆλ‘œμš΄ μ‚¬λžŒμ΄ μ˜¨λ‹€λ©΄ λŒ€κΈ°μ—΄ 쀑간에 ν•©λ₯˜ν•  수 μ—†κ³  λμ—μ„œλΆ€ν„° μ„œμ„œ κΈ°λ‹€λ €μ•Ό ν•  것이닀. 그리고 ꡬ맀λ₯Ό 마친 μ‚¬λžŒλ“€μ΄ λ§€μž₯을 λ‚˜κ°€κ²Œ 되면 λŒ€κΈ°μ—΄μ˜ 첫 μ€„μ˜ μ‚¬λžŒμ΄ λ§€μž₯ μ•ˆμœΌλ‘œ λ“€μ–΄κ°„λ‹€.

μ΄λŠ” queue ꡬ쑰와 맀우 μœ μ‚¬ν•˜λ‹€.

queue

λ”°λΌμ„œ 큐에 μš”μ†Œλ₯Ό μ‚½μž…ν•  λ•Œλ§ˆλ‹€ ν•΄λ‹Ή μš”μ†ŒλŠ” 큐의 끝에 μ‚½μž…λœλ‹€.

큐의 κ΅¬ν˜„

  1. Array

  • Linear Queue

μ„ ν˜• νλŠ” 1차원 배열을 μ‚¬μš©ν•˜μ—¬ 순차 자료ꡬ쑰 λ°©μ‹μœΌλ‘œ 큐λ₯Ό κ΅¬ν˜„ν•œλ‹€.

  • Circular Queue

μ„ ν˜• νμ—μ„œ deQueue() 연산을 μˆ˜ν–‰ν•˜κ²Œ 되면 제거된 μš”μ†Œμ˜ indexλŠ” 빈 κ³΅κ°„μ΄λ˜κ³  ν™œμš©λ˜μ§€ μ•ŠλŠ”λ‹€. λ‹€μ‹œ ν™œμš©ν•˜λ €λ©΄ 맀번 μ‚­μ œν•˜λ©΄μ„œ 뒀에 μžˆλŠ” μš”μ†Œλ₯Ό ν•œμΉΈμ”© μ΄λ™μ‹œμΌœμ•Ό ν•œλ‹€. N개의 μš”μ†Œκ°€ 있으면 O(N)만큼의 μ‹œκ°„ λ³΅μž‘λ„κ°€ λ°œμƒν•˜κ³  μ΄λŠ” μ„±λŠ₯상 맀우 λΉ„νš¨μœ¨μ μ΄λ‹€.

μ›ν˜• νλŠ” μ„ ν˜•κ³Ό λ‹€λ₯΄κ²Œ Queue의 끝에 λ„μ°©ν•˜λ©΄ μ‹œμž‘ μ§€μ μœΌλ‘œ λ‹€μ‹œ λŒμ•„κ°„λ‹€. μ›ν˜• νλŠ” λ°°μ—΄μ˜ 처음과 끝이 μ—°κ²°λ˜μ–΄ μžˆλ‹€λŠ” 것을 κ°€μ •ν•œλ‹€. 초기 곡백 μƒνƒœμ˜ front와 endλŠ” 0이닀. 또, μ›ν˜• νμ—μ„œ 포화 μƒνƒœλŠ” front와 end 사이에 빈 곡간이 μ‘΄μž¬ν•˜λ―€λ‘œ front와 end의 값을 μ¦κ°€μ‹œν‚¬ λ•Œ λ°°μ—΄μ˜ 크기에 λŒ€ν•΄ λ‚˜λ¨Έμ§€ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ 빈 곡간을 κ΅¬ν˜„ν•˜λŠ” 것이닀.

μ„ ν˜• νμ—μ„œλŠ” sizeλ₯Ό 5둜 ν• λ‹Ήν•˜λ©΄ 5개의 곡간을 μ‚¬μš©ν•˜μ§€λ§Œ μ›ν˜• νμ—μ„œλŠ” ν•˜λ‚˜μ˜ 빈 곡간을 λ§Œλ“ λ‹€. 즉, sizeλ₯Ό 5둜 할당해도 4개의 κ³΅κ°„λ§Œ μ‚¬μš©ν•œλ‹€λŠ” 것이닀.

μ‹œκ°„ λ³΅μž‘λ„ : O(1)

  1. LinkedList

μ‹œκ°„ λ³΅μž‘λ„ : O(1)

Last updated