트랙
/
C++
C++
/
연습 문제
/
간단한 연결 리스트
간단한 연결 리스트

간단한 연결 리스트

보통

소개

음악 스트리밍 회사에서 일하고 있어요.

음악 플레이어 애플리케이션에 사용할 플레이리스트 기능을 만드는 일을 맡게 됐어요.

지침

음악 플레이어 애플리케이션의 프로토타입을 작성해요.

프로토타입에서는 각 노래를 숫자로 나타내요. 숫자 범위(노래 ID)가 주어지면 단방향 연결 리스트를 만들어요.

단방향 연결 리스트가 주어지면, 리스트를 뒤집어서 노래를 반대 순서로 재생할 수 있어야 해요.

Note

연결 리스트는 컴퓨터 과학의 기본적인 자료 구조이며, 다른 자료 구조를 구현할 때 자주 사용돼요.

가장 단순한 연결 리스트는 단방향 연결 리스트예요. 즉, 각 요소(또는 "노드")는 데이터와 함께 리스트의 다음 노드를 가리키는 무언가를 담고 있어요.

연결 리스트에 대해 더 깊이 알아보고 싶다면, 멋진 그림으로 설명해 주는 이 글을 확인해 봐요.

구현 힌트

List 클래스의 기본 구조를 준비해 두었어요. 여기에는 사용할 수 있는 Element* 타입의 head와 size_t 타입의 current_size라는 private 변수가 있어요.

Element 구조체도 함께 제공돼요. 이 구조체에는 int 타입의 data와 Element* 타입의 next라는 두 변수가 있어요.

자세한 내용은 simple_linked_list.h에서 확인할 수 있어요. 그 파일을 꼭 바꿔야 하는 건 아니지만, 필요하다면 바꿔도 돼요.

테스트는 simple_linked_list.cpp에 제공된 그대로의 함수를 사용하니, 함수의 시그니처는 바꾸지 마세요. 원한다면 함수와 멤버를 더 추가해도 돼요.

스마트 포인터를 사용해도 되나요?

헤더 파일에 raw 포인터가 포함되어 있지만, 다른 방식으로 구현해도 괜찮아요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C++ Exercism

간단한 연결 리스트 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 C++ 트랙을 개념 19개연습 문제 100개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.