음악 스트리밍 회사에서 일하고 있어요.
음악 플레이어 애플리케이션에 사용할 플레이리스트 기능을 만드는 일을 맡게 됐어요.
음악 플레이어 애플리케이션의 프로토타입을 작성해요.
프로토타입에서는 각 노래를 숫자로 나타내요. 숫자 범위(노래 ID)가 주어지면 단방향 연결 리스트를 만들어요.
단방향 연결 리스트가 주어지면, 리스트를 뒤집어서 노래를 반대 순서로 재생할 수 있어야 해요.
연결 리스트는 컴퓨터 과학의 기본적인 자료 구조이며, 다른 자료 구조를 구현할 때 자주 사용돼요.
가장 단순한 연결 리스트는 단방향 연결 리스트예요. 즉, 각 요소(또는 "노드")는 데이터와 함께 리스트의 다음 노드를 가리키는 무언가를 담고 있어요.
연결 리스트에 대해 더 깊이 알아보고 싶다면, 멋진 그림으로 설명해 주는 이 글을 확인해 봐요.
List 클래스의 기본 구조를 준비해 두었어요.
여기에는 사용할 수 있는 Element* 타입의 head와 size_t 타입의 current_size라는 private 변수가 있어요.
Element 구조체도 함께 제공돼요. 이 구조체에는 int 타입의 data와 Element* 타입의 next라는 두 변수가 있어요.
자세한 내용은 simple_linked_list.h에서 확인할 수 있어요. 그 파일을 꼭 바꿔야 하는 건 아니지만, 필요하다면 바꿔도 돼요.
테스트는 simple_linked_list.cpp에 제공된 그대로의 함수를 사용하니, 함수의 시그니처는 바꾸지 마세요. 원한다면 함수와 멤버를 더 추가해도 돼요.
헤더 파일에 raw 포인터가 포함되어 있지만, 다른 방식으로 구현해도 괜찮아요.
Exercism에 가입하고 C++ 트랙을 개념 19개연습 문제 100개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.