###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
블로그 이미지

Or71nH

,