Menu



Manage

Cord > Study_Algorithm 전체 다운로드
Study_Algorithm > 10/week10_chap07_08.py Lines 81 | 1.8 KB
다운로드

                        #week10_chap07_08&09.py

def is_queue_full():
	global SIZE, queue, front, rear
	if rear != SIZE-1:  # 뒷쪽이 비었을 때
		return False
	elif (rear == SIZE - 1) and (front == -1):  # 꽉 찼을 때
		return True
	else:  # 앞쪽이 비었을 때
		for i in range(front+1, SIZE):
			queue[i-1] = queue[i]
			queue[i] = None
		front -= 1
		rear -= 1
		return False


def is_queue_empty():
	global SIZE, queue, front, rear
	if front == rear:
		return True
	else:
		return False


def enQueue(data):
	global SIZE, queue, front, rear
	if is_queue_full():
		print("큐가 꽉 찼습니다.")
		return
	rear += 1
	queue[rear] = data


def deQueue():
	global SIZE, queue, front, rear
	if is_queue_empty():
		print("큐가 비었습니다.")
		return None
	front += 1
	data = queue[front]
	queue[front] = None
	return data


def peek():
	global SIZE, queue, front, rear
	if is_queue_empty():
		print("큐가 비었습니다.")
		return None
	return queue[front+1]


SIZE = int(input("큐의 크기를 입력하세요 ==> "))
queue = [None for _ in range(SIZE)]
front = rear = -1


if __name__ == "__main__" :
	select = input("삽입(I)/추출(E)/확인(V)/종료(X) 중 하나를 선택 ==> ")

	while (select != 'X' and select != 'x') :
		if select=='I' or select =='i' :
			data = input("입력할 데이터 ==> ")
			enQueue(data)
			print("큐 상태 : ", queue)
		elif select=='E' or select =='e' :
			data = deQueue()
			print("추출된 데이터 ==> ", data)
			print("큐 상태 : ", queue)
		elif select=='V' or select =='v' :
			data = peek()
			print("확인된 데이터 ==> ", data)
			print("큐 상태 : ", queue)
		else :
			print("입력이 잘못됨")

		select = input("삽입(I)/추출(E)/확인(V)/종료(X) 중 하나를 선택 ==> ")

	print("프로그램 종료!")