
๐งฉ ํ(Queue): ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์์ ๋๊ณ , ๋จผ์ ์ ์ฌ๋ ๋ฐ์ดํฐ๋ถํฐ ๊บผ๋ด์ธ ์ ์๋๋ก ์๋ฃ๋ฅผ ์ ์ฅํด๋ ํํ
enqueue : ๋ฐ์ดํฐ์ฝ์
+ dequeue : ๋ฐ์ดํฐ์ถ์ถ๐ ์น์๋ฒ ์ ์์๊ด๋ฆฌ
| ๊ตฌ๋ถ | ๊ฒฐ๊ณผ |
|---|---|
| ํ ์ ์ฉ โ | ์ ์์ โ ๋๊ธฐ์ด, ์์ฐจ์ ์ผ๋ก Client Request ์ฒ๋ฆฌ |
| ํ ์ ์ฉ โ | ์ ์์ > ๋์์์ฉ๊ฐ๋ฅ์ธ์ โ ์๋ฒ๋ค์ด |
๐งฉ ํ ํํ: ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ์ ๊ตฌ์ ๋๊ฐ๋ ์ถ๊ตฌ๊ฐ ๋ฐ๋ก ์กด์ฌ

front : ํ์์ ๊ฐ์ฅ ์ โ ์ฒ๋ฆฌ(์ญ์ )rear : ํ์์ ๊ฐ์ฅ ๋ง์ง๋ง โ ์ฝ์
>>> queue = [None, None, None] # ๋ฏธ๋ฆฌ๊ณต๊ฐ์ง์
>>> front = rear = -1
๐ ์ฒซ๋ฒ์งธ๋ฐ์ดํฐ
>>> rear += 1 # rear ์์น +1์นธ ์ด๋
>>> queue[rear] = 'python'
๐ ๋๋ฒ์งธ๋ฐ์ดํฐ
>>> rear += 1
>>> queue[rear] = 'java'
๐ ๋ฐ์ดํฐ์ถ๋ ฅ
>>> for i in range(0, len(queue), 1):
print(queue[i], end = ' ')
# python java
>>> front += 1 # front ์์น +1์นธ ์ด๋
>>> data = queue[front] # queue[0]
>>> queue[front] = None # none์ฒ๋ฆฌ
>>> print(data) # python
>>> front += 1 # front ์์น +1์นธ ์ด๋
>>> data = queue[front] # queue[1]
>>> queue[front] = None # none์ฒ๋ฆฌ
>>> print(data) # java
๐ ํ๊ฐ ๊ฝ์ฐผ๋์ง ํ์ธํ๋ ํจ์
>>> def isQueueFull():
global SIZE, queue, front, rear
if (rear == SIZE - 1):
return True
else:
return False
๐ ๋ฐ์ดํฐ๋ฃ๋ enQueue ํจ์
>>> def enQueue(data):
global SIZE, queue, front, rear
if (isQueueFull()):
print("ํ๊ฐ ๊ฝ ์ฐผ์ต๋๋ค.")
return
rear += 1
queue[rear] = data
๐ ํ๊ฐ ๋น์๋์ง ํ์ธํ๋ ํจ์
>>> def isQueueEmpty():
global SIZE, queue, front, rear
if (front == rear):
return True
else:
return False
๐ ๋ฐ์ดํฐ๋นผ๋ deQueue ํจ์
>>> def deQueue():
global SIZE, queue, front, rear
if (isQueueEmpty()):
print("ํ๊ฐ ๋น์์ต๋๋ค.")
return None
front += 1
data = queue[front]
queue[front] = None
return data
๐ ํ ๋ฐ์ดํฐ ์ถ๋ ฅํ๋ ํจ์
>>> def checkQueue():
for i in range(0, len(queue), 1):
print(queue[i], end = ' ')
๐ peek ํจ์
>>> def peek():
global SIZE, queue, front, rear
if (isQueueEmpty()):
print("ํ๊ฐ ๋น์์ต๋๋ค.")
return None
return queue[(front + 1) % SIZE] # front ์์น +1์นธ
๐ ์ํํ ๋ค ์ฐผ๋์ง ํ์ธํ๋ ํจ์
>>> def isQueueFull():
global SIZE, queue, front, rear
if ((rear + 1) % SIZE == front): # rear๊ฐ ๋ง์ง๋ง์นธ์ ์๋์ํ
return True
else:
return False
๐ ์ํํ ๋ฐ์ดํฐ๋ฃ๋ enQueue ํจ์
>>> def enQueue(data):
global SIZE, queue, front, rear
if (isQueueFull()):
print("ํ๊ฐ ๊ฝ ์ฐผ์ต๋๋ค.")
return
rear = (rear + 1) % SIZE # rear ํ์นธ ์ฎ๊ธด ํ
queue[rear] = data
๐ ์ํํ ๋ฐ์ดํฐ๋นผ๋ deQueue ํจ์
>>> def deQueue():
global SIZE, queue, front, rear
if (isQueueEmpty()):
print("ํ๊ฐ ๋น์์ต๋๋ค.")
return None
front = (front + 1) % SIZE
data = queue[front]
queue[front] = None
return data
| ํญ๋ชฉ | ์กฐํ | ์ฝ์ | ์ญ์ |
|---|---|---|---|
| ํ(Queue) | O(n) | O(1) | O(1) |