더북(TheBook)

2.3.1 연습 문제 7: 조직도 구조 만들기

이번 연습 문제에서는 그림 2-1과 비슷한 형태의 회사 조직도를 코드로 구현해보겠습니다.1

  1. 먼저 필요한 헤더 파일을 포함합니다.

#include <iostream>
#include <queue>

  2. 편의상 한 직원은 최대 두 명의 부하 직원을 거느릴 수 있다고 가정하겠습니다. 일단 이렇게 구현하고 나면 나중에 실제 회사와 비슷한 형태로 확장하는 것은 그렇게 어렵지 않을 것입니다. 이러한 형태의 트리를 이진 트리(binary tree)라고 합니다. 이진 트리를 위한 기본 구조를 만듭니다.

struct node
{
    std::string position;
    node* first;
    node* second;
};

각각의 노드는 다른 두 개의 노드(하위 노드)에 대한 링크를 가집니다. 이를 통해 데이터의 계층 구조를 나타낼 수 있습니다. 여기서는 노드에 조직도상의 직책(position)만을 저장했지만, 이는 여러분이 원하는 형태로 확장할 수 있습니다. 해당 직책의 담당자 이름을 추가할 수도 있고, 혹은 해당 부서의 모든 직원 정보를 담고 있는 구조체를 데이터에 저장할 수도 있습니다.

  3. 프로그램 코드에서 이 노드를 직접 조작하지는 않을 것입니다. 그래서 org_tree라는 이름의 구조를 새로 정의하겠습니다.

struct org_tree
{
    node* root;

 

 


1 역주 이 장의 연습 문제와 실습 문제에서는 노드를 동적 생성한 후 해제를 하지 않아서 메모리 릭이 발생합니다. 그러므로 실제 사용 시에는 주의하기 바랍니다.

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