###Q 를이용한 너비 우선 탐색
def BFS(G, v):
visited = [0]*n
queue = []
queue.append(v)
while queue :
t = queue.pop(0)
if not visite[t] :
visitedt] = True
visit(t)
for i in G[t] :
if not visited[i] :
queue.append(i)
###선형Q
enQueue(item) | 큐의 뒤쪽 rear 다음)에 원소를 삽입하는 연산 | def enQueue(item) : global rear if isFull() : print("Queue_Full") else : rear +=1 Q[rear] = item |
deQueue() | 큐의 앞쪽(front)에서 원소를 삭제하고 반환하는 연산 | def deQueue(item) : global front if isEmpty() : print("Queue_Empty") else : front +=1 return Q[front] |
createQueue() | 공백 상태의 큐를 생성하는 연산 | |
isEmpty() | 큐가 공백상태인지를 확인하는 연산 | def isEmpty(): return front ==rear |
isFull() | 큐가 포화상태인지를 확인하는 연산 | def isFull(): return rear == len(Q) -1 |
aQpeek() | 큐의 앞쪽(front)에서 원소를 삭제 없이 반환하는 연산 | def Qpeek(): if isEmpty() : print("Queue_Empty") else:return Q[front+1] |
### 원형 Queue
enQueue(item) | 큐의 뒤쪽 rear 다음)에 원소를 삽입하는 연산 | def enQueue(item) : global rear if isFull() : print("Queue_Full") else : rear = (rear +1) % len(cQ) cQ[rear] = item |
deQueue() | 큐의 앞쪽(front)에서 원소를 삭제하고 반환하는 연산 | def deQueue(item) : global front if isEmpty() : print("Queue_Empty") else : front = (front + 1)% len(cQ) return cQ[front] |
delet() | 삭제하려 할때 | def delet(): global front if isEmpty(): print("Queue_Empty") else : front = (front + 1) % len(cQ) |
createQueue() | 공백 상태의 큐를 생성하는 연산 | |
isEmpty() | 큐가 공백상태인지를 확인하는 연산 | def isEmpty(): return front ==rear |
isFull() | 큐가 포화상태인지를 확인하는 연산 | def isFull(): return rear +1 % len(cQ)== fornt |
aQpeek() | 큐의 앞쪽(front)에서 원소를 삭제 없이 반환하는 연산 | def Qpeek(): if isEmpty() : print("Queue_Empty") else:return Q[front+1] |
### 원형큐
def isEmpty():
return front ==rear
def isFull():
return(rear+1) %len(cQ) ==front
def enQueue(item):
global rear
if isFull():
print("Queue_Full")
else :
rear = (rear +1) %len(cQ)
cQ[rear] = item
def deQueue():
global front
if isEmpty():
print("Queue_Empty")
else:
front = (front +1) %len(cQ)
return cQ[front]
cQ_SIZE = 3
cQ =[0]*cQ_SIZE
front = rear = 0
enQueue('A')
enQueue('B')
enQueue('C')
print(deQueue())
print(deQueue())
print(deQueue())
### 간단형
def isEmpty():
return len(queue) == 0
def isFull():
return(rear+1) %len(cQ) ==front
def enQueue(item):
queue.append(item)
def deQueue():
if isEmpty():
print("Queue_Empty")
else:
return queue.pop(0)
def Qpeek():
if isEmpty():
print("Queue_Empty")
else:
retrun queue[0]
queue =[]
enQueue('A')
enQueue('B')
enQueue('C')
print(deQueue())
print(deQueue())
print(deQueue())
### 연결Queue
enQueue(item) | 큐의 뒤쪽 rear 다음)에 원소를 삽입하는 연산 | def enQueue(item) : global front, rear new Node = Node(item) if isEmpty() : front = newNode else : rear.next = newNode rear = newNode |
deQueue() | 큐의 앞쪽(front)에서 원소를 삭제하고 반환하는 연산 | def deQueue() : global front, rear if isEmpty() : print("Queue_Empty") return None item = front.item front = front.next if isEmpty(): rear = None return item |
createQueue() | 공백 상태의 큐를 생성하는 연산 | 포인트만 생성 fornt = None rear = None |
isEmpty() | 큐가 공백상태인지를 확인하는 연산 | def isEmpty(): return front ==rear |
### 파이썬 연결Q
class Node:
def __init__(self, itme, n=Node):
self.item =item
self.next = n
def enQueue(item):
flobal frontrear
newNode = Node(item)
if front ==None :
front = newNode
else:
rear.next = newNode
rear = newNode
def isEmpty():
return front ==None
def deQueue():
gloval front, rear
if isEmpty():
print("Queue_Empty")
return None
item = front.item
front = front.next
if front == None:
rear = None
return item
def Qpeek():
return front.item
def printQ():
f = front
s = ""
while f:
s += f.item + ""
f = f.next
return s
front = None
rear = None
enQueue('A')
enQueue('B')
enQueue('C')
printQ()
print(deQueue())
print(deQueue())
print(deQueue())
###신기한거
queue.Queue(maxsize) | 선입선출 쿠 객체를 생성 | |
queue.LifoQueue(maxsize) | 스택개념의 후입 선출 큐객체 생성 | |
queue.PriorityQueue(maxsize) | 우선순위 큐 객체를 생성, 입력되는 아이템의 형식은 순위 아이템의 튜플로 입력되며 , 우선순위는 숫자가 작을 수록 높은 순위를 가짐 | |
qsize() | 큐객체에 입력된 아이템의 개수를 반환 | |
put(item[, block[, timeout]]) | 큐 객체에 아이템을 입력 | |
get([block[, timeout]]) | 생성된 큐 객체 특성에 맞추어 아이템 1개를 반환 | |
emnpty() | 큐객체가 비어있으면 True 리턴 | |
full() | 큐객체가 꽉차있으면 True 리턴 |
import queue
q = queue.Queue()
q.put('A')
q.put('B')
q.put('C')
while not q.empty():
print(q.get())
'+++++SW 일일 공부+++++ > SW Expert Aademy' 카테고리의 다른 글
링크드 리스트 (0) | 2020.05.21 |
---|---|
SW 분할 정복 (0) | 2020.04.19 |
SW 백트래킹 미로찾기 (0) | 2020.04.19 |
SW 계산방법 (0) | 2020.04.19 |
트리구조의 모든 집합 구하기 시프트 활용 (0) | 2020.04.09 |