node 2

[CS50] 연결리스트 : 트리

지난 포스팅에서 연결 리스트를 활용해 다양한 데이터 구조를 만들어봤습니다. 연결 리스트는 각 요소가 다른 요소를 하나씩만 가리키고 있었는데 만약 가리키는 요소가 더 많아진다면 어떻게 될까요? 오늘은 연결 리스트 기반의 자료구조인 '트리'에 대해 공부해보도록 하겠습니다. 트리는 기존 연결리스트의 각 노드들의 연결과 달리 2차원적으로 구성되어있는 연결입니다. 각 노드는 일정한 층에 속하게 되고, 다음 층의 노드들을 가리키는 포인터를 갖게 됩니다. 쉽게 그림으로 표현하자면 이렇게 기존 연결 리스트의 각 노드들이 1차원적으로 연결되어 있었다면 트리는 이렇게 표현합니다. 여기서 가장 높은 층에서 트리가 시작되는 노드를 '루트'라고 합니다. 루트 노드는 다음 층의 노드들을 각각 가리키고 있고 이를 '자식 노드'라고..

[CS50] 연결리스트 : 도입

지금까지 여러 자료형의 데이터를 메모리에 저장하고, 읽고, 삭제하는 방법에 대해 공부했었습니다. 그런데 만약 프로그램이 복잡해지거나 양이 방대해진다면 기본적인 포인터 구조만으로는 메모리를 관리하기에 다소 번거로울 겁니다. 그래서 오늘은 메모리를 더 효율적으로 관리하고 사용하기 위한 데이터의 개념과 연결 리스트에 대해 공부해보도록 하겠습니다. 데이터 구조란 우리가 컴퓨터 메모리를 효율적으로 관리하기 위해 새로 정의하는 구조체입니다. 이 데이터 구조중 하나인 연결 리스트는 배열과 다르게 각 값이 메모리에 여러군데 나누어져 있더라도 다음 값의 메모리 주소만 기억한다면 배열처럼 값을 연이어서 읽어 들일 수 있게 해 주는 것을 말합니다. 이렇게 각각의 번호가 떨어져 있더라도 포인터를 이용해서 자신의 값과함께 바로..