힙(Heap)

힙(Heap)

특별한 트리를 기본으로 하는 자료구조! 오늘은 ‘힙(Heap)’이란 자료구조에 대해서 알아보려고 합니다. 이 힙(Heap)이란 자료구조는 위키백과에 따르면 ‘특별한 트리를 기본으로 하는 자료구조이다.’라고 설명되어 있습니다. 여기서 특별한 트리란 우리가 전에 배운 완전 이진트리를 말하며, 힙 자료구조는 최대 힙(Max Heep)과 최소 힙(Min Heep)으로 나뉘며 이러한 힙은 최댓값 또는 최솟값을 짧은 시간 내에 찾기 위해서 만들어진 자료구조입니다. 최대 힙이란 … 더 읽기

트리(Tree)

트리(Tree)

나무와 유사한 계층적 구조! 오늘 배우게 될 트리(Tree)란 자료구조는 나무와 유사하게 계층적 구조를 띄고 있는 자료구조입니다. 트리 그대로죠. 나무에 뿌리와 가지, 잎이 있듯 트리라는 자료구조에서도 나무와 뿌리 그리고 가지가 존재합니다. 여기서 뿌리 노드는 루트 노드라 하고, 가지와 잎은 그대로 가지 노드, 잎 노드와 같이 부릅니다. 트리가 응용되는 분야에는 무엇이 있을까요? 트리의 주된 목적은 탐색이며, 의사 … 더 읽기

링크드 큐(Linked Queue)

링크드 큐(Linked Queue)

원형이 아닌 직선으로! 이번엔 순환 큐(Circular Queue)가 아닌, 링크드 큐(Linked Queue)입니다. 링크드가 하니 링크드 리스트가 떠오르지 않나요? 비슷합니다. 링크드 큐의 노드에도 그 노드의 다음을 가리키는 주소 값을 가지고 있으며, 노드가 전단(Front) -> 후단(Rear) 방향으로 이어져 있습니다. 그래도 전단에서 제거 연산이 이루어진다는 것과, 후단에서 삽입 연산이 이루어진다는 것은 바뀌지 않습니다. 링크드 큐의 구현은 상당히 간단합니다. 링크드 … 더 읽기

순환 큐(Circular Queue)

순환 큐(Circular Queue)

선입선출! 큐(Queue)란 자료구조는 앞서 배웠던 스택(Stack) 자료구조와는 달리 선입선출(First In, First Out: FIFO)의 구조를 지니고 있습니다. 한마디로 먼저 들어온 데이터는 먼저 나간다는 소리입니다. 예를 들면, 점심시간에 학생들이 점심을 먹으러 일렬로 줄을 서있다고 가정합시다. 줄을 선 순서대로 차례차례 급식을 받고 빠져나가죠? 이러한 구조를 지닌 자료구조가 바로 큐(Queue)라고 말할 수 있습니다. 오늘은 순환 큐(Circular Queue)와 링크드 큐(Linked … 더 읽기

스택(Stack)

스택(Stack)

선입 후출! 후입 선출! 오늘 알아보게 될 스택(Stack)이란 자료구조는 선입 후출(First In, Last Out: FILO), 후입 선출(Last In, First Out: LIFO)의 구조를 가지고 있습니다. 예를 들자면, 어느 개발자의 책상에 빼곡히 쌓여있는 책을 정리하기 위해 가장 위에 있는 책부터 꺼내들어 차례대로 정리합니다. 여기서, 먼저 쌓인 책들보다 나중에 쌓인 책들이 먼저 밖으로 나간다고 해서 후입선출의 구조라 말하고, … 더 읽기