4. insertRear(data)
: 덱의 맨 뒤에 데이터 삽입
5. popFront( ) -> element
: 덱의 맨 처음 데이터를 삭제하면서 반환
6. popRear( ) -> element
: 덱의 맨 마지막 데이터를 삭제하면서 반환
7. peekFront( ) -> element
: 덱의 맨 처음 데이터를 삭제하지 않고 반환만 함
8. peekRear( ) -> element
: 덱의 맨 마지막 데이터를 삭제하지 않고 반환만 함
스택과 큐를 공부했기 때문에 ADT만 보아도 사용법이 어느 정도 그려지는군요. 덱은 어떻게 구현할 수 있을까요? 먼저 원형 큐를 구현할 때 사용한 배열을 원형으로 만드는 방법을 고려해 볼 수 있습니다. 그리고 연결 리스트를 배울 때 알아본 이중 연결 리스트도 떠올릴 수 있겠군요. 결론부터 말하면 두 방법 모두 덱을 구현하는 데 사용할 수 있습니다. 이 절에서는 실제로 구현하지 않고 파이썬이 제공하는 deque을 이용해서 스택과 큐를 흉내 내고 파이썬의 내부 구현이 원형 배열인지 이중 연결 리스트인지 유추해 보겠습니다. 문서에 나와 있는 빅오만 보고도 내부 구현을 유추할 수 있습니다. 자료 구조를 공부하는 데 좋은 경험이 될 것입니다.