기록방
데큐 (Deque) 본문
데큐 : 스택과 큐가 합쳐진 형태로 앞 뒤 모두 입력과 출력이 가능하다.
[ 기능 ]
- insertFront/Rear : 데큐 앞/뒤 데이터를 넣음
- deleteFront/Rear : 데큐 앞/뒤 데이터를 꺼냄
- peekFront/Rear : 데큐의 앞/뒤 데이터를 알림(엿봄)
- indexOf : 데큐에 특정 값이 있는지, 있다면 어느 위치에 있는지 알림
- size : 데큐의 데이터 수 확인
- clear : 데큐 비우기
- isEmpty : 데큐가 비었는지 확인
- isFull : 데큐가 가득 찼는지 확인
- dump : 데큐의 모든 데이터 확인
[ python ]
class Deque:
def __init__(self):
print('\n-- 데큐 프로그램 --')
self.dq = []
self.max = 10
def insertFront(self, num):
if len(self.dq) < self.max:
self.dq.insert(0, num)
print('insertFront :', num)
else:
print('오류 : 데큐가 가득 찼습니다.')
def insertRear(self, num):
if len(self.dq) < self.max:
self.dq.append(num)
print('insertRear :', num)
else:
print('오류 : 데큐가 가득 찼습니다.')
def deleteFront(self):
if self.dq:
temp = self.dq[0]
self.dq = self.dq[1:]
print('deleteFront :',temp)
else:
print('오류 : 데큐가 비었습니다.')
def deleteRear(self):
if self.dq:
temp = self.dq.pop()
print('deleteRear :',temp)
else:
print('오류 : 데큐가 비었습니다.')
def peekFront(self):
if self.dq:
print('peek :',self.dq[0])
else:
print('오류 : 데큐가 비었습니다.')
def peekRear(self):
if self.dq:
print('peek :',self.dq[-1])
else:
print('오류 : 데큐가 비었습니다.')
def indexOf(self, num):
if num in self.st:
print('\'{0}\'의 위치는 {1}번 인덱스입니다.'.format(num,self.dq.index(num)))
else:
print('데큐 안에 \'{0}\' 없습니다.'.format(num))
def clear(self):
self.dq = []
print('데큐가 초기화 되었습니다.')
def size(self):
print('데큐의 크기는 {0} 입니다.'.format(len(self.dq)))
def isEmpty(self):
if self.dq:
print('데큐가 비어있지 않습니다.')
else:
print('데큐가 비어있습니다.')
def isFull(self):
if len(self.dq) < self.max:
print('데큐가 가득차지 않았습니다.')
else:
print('데큐가 가득 찼습니다.')
def dump(self):
print('deque :',self.dq)
dq = Deque()
op = 1
num = 0
while op != 0:
print('\n[menu]')
print('1)insertFront 2)insertRear 3)deleteFront 4)deleteRear 5)peekFront 6)peekRear')
print('7)indexOf 8)clear 9)size 10)isEmpty 11)isFull 12)dump 0)exit')
print('op : ',end='')
op = int(input())
print('')
if op == 1:
num = int(input('num : '))
dq.insertFront(num)
elif op == 2:
num = int(input('num : '))
dq.insertRear(num)
elif op == 3:
dq.deleteFront()
elif op == 4:
dq.deleteRear()
elif op == 5:
dq.peekFront()
elif op == 6:
dq.peekRear()
elif op == 7:
num = int(input('num : '))
dq.indexOf(num)
elif op == 8:
dq.clear()
elif op == 9:
dq.size()
elif op == 10:
dq.isEmpty()
elif op == 11:
dq.isFull()
elif op == 12:
dq.dump()
elif op != 0:
print('잘못 입력하셨습니다.')
print('종료합니다.')
728x90
'CS > 자료구조' 카테고리의 다른 글
트라이(Trie) 자료구조 (0) | 2024.05.19 |
---|---|
큐 (Queue) (0) | 2021.05.04 |
스택 (Stack) (0) | 2021.05.04 |