본문 바로가기

C67

Chapter 10. 트리(Tree) Def) 트리(Tree) 계층적인 구조를 나타내는 자료구조. 보통 Root가 위, Branch와 Leaf이 아래로 자라는 형태로 표현. Def) 노드(Node, Vertex) 트리의 데이터를 저장하는 원소 단위. 정점. Def) 엣지(Edge, Link) 노드와 노드를 연결하는 선. 간선 트리의 엣지는 부모-자식 계층 관계만을 나타냄. 즉, 엣지의 위에 있는 것이 부모, 아래가 자식. 노드의 개수가 N이면 항상 N - 1개의 엣지가 존재 즉, 두 개의 노드를 연결하는 엣지는 항상 유일함. Note) 트리 관련 용어 트리를 제대로 이해하기 위해선, 관련 용어 숙지가 필수. 루트(Root) 트리의 최상단 노드 부모 - 자식 관계(Parent - Child) 엣지로 연결되어 있는 두 노드의 상대적 관계 루트의.. 2021. 11. 19.
Chapter 09. 해시 테이블(Hash Table) Chapter 06. 목차. 6.1 아이디어 6.2 해시 셋 6.3 해시 함수와 해시 값. 6.4 해시 테이블 With 배열 6.5 해시 테이블 With Doubly Linked list 6.1 탄생 배경과 구현 방법 - 우리의 뇌가 어떤 기억을 상기시키는 메커니즘을 생각해보자. 자신이 살아온 모든 기억을 선형 탐색하며 찾진 않음. 마치 어떤 Key가 있고, 해당 Value를 순식간에 찾아냄. - 병원에가도 마찬가지임. 주민번호를 읊으면 순식간에 5천만명중 정확하게 내 정보만 나오게 됨. 만약 선형 탐색한다면? 탐색하다 사망할 수도 있음. 이진 탐색은? 정렬되어 있지 않아서 사용 불가. 5천만개의 자료를 정렬하는데도 오래걸림. - 우체통도 각 가구마다 번호가 적혀 있어서 편하게 가져갈 수있음. 그러나 큰.. 2021. 11. 12.
Chapter 08. 연결 리스트(Linked List) 0. 연결리스트 - 연결되지 않은 메모리를 사용함. 배열과 정반대의 장단점. 이때문에, 중간 삽입 중간 삭제가 아주 쉬움. - 단점은 N번째 방을 바로 찾을수가 없음. 배열과 다름. 즉, Random Access가 불가능함. 1. 기본 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include enum { FALSE = 0, TRUE = 1, INVALID_INDEX = -1 }; typedef struct node { int nData; struct node* pNext; /* struct node_t* 라고 적으면 안됨. */ } node_t; void destroy(node_t* _pHeadNode); void recursively_destroy(.. 2021. 11. 12.
Chapter 07. 큐(Queue) 3.1 기본코드 #define _CRT_SECURE_NO_WARNINGS #include #include enum { FALSE = 0, TRUE = 1, INVALID_INDEX = -1, MAX_COUNT = 6 }; typedef struct queue { int nArray[MAX_COUNT]; size_t uCount; size_t uFront; size_t uBack; } queue_t; void enqueue(queue_t* _pQueue, int _nData); int is_empty(queue_t* _pQueue); int dequeue(queue_t* _pQueue); void print(queue_t* _pQueue); int main(void) { size_t i; queue_t q.. 2021. 11. 10.