더북(TheBook)

  9. main() 함수를 만들고 앞서 구현한 클래스를 사용하는 코드를 추가합니다.

int main()
{
    singly_ll sll = {1, 2, 3};
    sll.push_front(0);
    
    std::cout << "첫 번째 리스트: ";
    for (auto i : sll)
        std::cout << i << " "; // 출력: 0 1 2 3
    std::cout << std::endl;

    auto sll2 = sll;
    sll2.push_front(-1);
    std::cout << "첫 번째 리스트를 복사한 후, 맨 앞에 -1을 추가: ";
    for (auto i : sll2)
        std::cout << i << ' '; // 출력: -1 0 1 2 3
    std::cout << std::endl;

    std::cout << "깊은 복사 후 첫 번째 리스트: ";

    for (auto i : sll)
        std::cout << i << ' '; // 출력: 0 1 2 3
    std::cout << std::endl;
}

10. 위 예제 코드를 실행하면 다음과 같은 출력이 나타납니다.

첫 번째 리스트: 0 1 2 3
첫 번째 리스트를 복사한 후, 맨 앞에 -1을 추가: -1 0 1 2 3
깊은 복사 후 첫 번째 리스트: 0 1 2 3

이번 연습 문제에서 std::initializer_list를 이용하여 연결 리스트를 초기화하는 방법을 사용했습니다. push(), pop_front(), back() 같은 함수를 사용할 수도 있으며, 이 예제에서는 sll2 리스트에 push_front() 함수로 새로운 원소를 추가했습니다. sll2가 깊은 복사에 의해 생성되었기 때문에 sll2에 새 원소를 추가해도 sll 리스트에는 여전히 네 개의 원소가 있음을 확인할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.