1.6.3 실습 문제 1: 음악 재생 목록 구현하기
이번 실습 문제에서는 일반적인 이중 연결 리스트를 사용하기가 애매한 응용 프로그램을 만들어볼 것입니다. 이를 위해 수정된 형태의 연결 리스트를 새로 만들 것입니다. 이처럼 기본적인 자료 구조를 변경해서 사용해야 하는 경우가 종종 발생합니다. 여러 명의 사용자가 순서대로 진행하는 방식의 게임이나 재생 목록에 있는 모든 음악을 반복적으로 재생하는 음악 재생 프로그램이 그러한 예가 될 수 있습니다.
이러한 응용 프로그램들은 하나의 공통된 속성을 가지고 있는데, 모든 데이터에 순환적으로 접근해야 한다는 점입니다. 즉, 리스트의 원소에 차례대로 접근할 경우, 마지막 노드의 다음은 다시 첫 번째 노드가 되어야 합니다. 이러한 구조를 원형 연결 리스트(circular linked list)라고 합니다.
여기서는 음악 재생 프로그램에 대해 생각해보겠습니다. 이 프로그램은 다음의 기능을 제공해야 합니다.
1. 여러 개의 음악을 이용하여 재생 목록을 생성할 수 있습니다.
2. 재생 목록에 음악을 추가할 수 있어야 합니다.
3. 재생 목록에서 음악을 제거할 수 있어야 합니다.
4. 음악을 순환적으로 재생할 수 있어야 합니다(이 기능의 구현은 노래 제목 출력으로 대신합니다).
Note ≡
비슷한 기능의 컨테이너를 처음부터 구현한 ‘연습 문제 5: 기본적인 사용자 정의 컨테이너 만들기’를 참고하세요.