CS/자료구조(6)
-
[자료구조] Hash Table (해시 테이블)
정의 해싱 (Hashing) 해싱(Hashing)은 임의의 길이의 데이터를 고정된 길이의 데이터로 변환하는 작업을 뜻하며 고정된 길이의 데이터를 따로 해시(Hash) 혹은 해시 값(Hash Value)이라고도 부른다. 해시 함수 (Hash Function) 해시 함수(Hash Function)는 해싱을 진행할 때 사용하는 함수를 뜻하며 해시 함수에 따라 변환되는 데이터 값이 다르다. 그러나 입력된 데이터의 값이 같으면 같은 해시 함수를 사용하여 해싱했을 때 출력되는 데이터의 값은 항상 같다. 해시 테이블 (Hash Table) 해시 테이블(Hash Table)은 [ Key : Value ]로 이루어진 데이터에서 Key의 해시 값을 색인(index) 혹은 주소 삼아 Key에 대응하는 Value를 버킷(Bu..
2023.07.24 -
[자료구조] 배열(Array) vs 연결 리스트(Linked List)
배열과 연결 리스트는 둘 다 데이터를 저장하는 선형 자료구조이다. 그러나 어떠한 상황에 있어서 배열을 사용할 때가 있고 연결 리스트를 사용할 때가 존재한다. 어떤 점에서 그 기준이 나뉘는지 각 자료구조의 특징에 대해 알아보자. 배열(Array) 배열은 정적(static)인 자료구조이다. 정적인 이유는 배열을 만들기 위해서는 미리 그 크기를 정해놓기 때문에 나중에 데이터의 크기에 변동사항이 생겼을 때 크기를 유동적으로 수정하는 것이 불가능하다. 이러한 특성 때문에 배열은 데이터들이 빈번하게 추가 및 삭제 연산이 이루어지는 곳에서는 쓰기 힘들다. 그러나 배열은 연속된 메모리 주소를 할당 받기 때문에 임의 접근(random access)이 가능하다. 즉, 첫 번째 요소의 주소만 알게 된다면 다른 요소의 위치도..
2023.07.20 -
[자료구조] Linked List (연결 리스트) (feat. C 언어)
정의 연결 리스트(Linked List)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장한다. 노드의 포인터는 다음이나 이전의 노드와의 연결을 담당한다. 연결 리스트의 종류로는 단방향 연결 리스트(Singly Linked List), 양방향 연결 리스트(Doubly Linked List), 원형 연결 리스트(Circular Linkde List) 등이 있다. 일반적으로 연결 리스트는 헤드라는 더미 노드를 가지고 있다. 헤드는 데이터 값을 가지지 않고 연결 리스트의 처음을 담당한다. 연결 리스트의 마지막 위치(테일)에 있는 노드의 포인터는 null을 가리킨다. 연결 리스트는 자료의 추가, 삽입 및 삭제 연산이 배열보다 빠르다는 장점이 있으며 탐색 연산은 배열보다 시간이 ..
2023.07.19 -
[자료구조] Queue - Josephus problem (feat. C 언어)
문제 Josephus problem (요세푸스 문제)? n과 k가 자연수이고, k
2023.07.19 -
[자료구조] Queue (feat. C 언어)
정의 큐(Queue)는 자료 구조 중 선형 구조에 해당되며 먼저 삽입된 자료 순서대로 삭제되는 선입선출(FIFO : First In Fisrt Out) 방식으로 이루어져 있다. 자료를 삽입할 때는 enqueue라고 하며 반대로 삭제할 때는 dequeue라고 한다. 가장 먼저 삽입된 위치를 front, 가장 나중에 삽입된 위치를 rear라고 한다. 특징 선형 구조 선입선출(FIFO : First In Fisrt Out) 삽입 - enqueue, 삭제 - dequeue 가장 먼저 삽입 위치 - front, 가장 나중 삽입 위치 - rear 운영체제의 작업 스케줄링 연산 enqueue 연산 : 큐가 비어있는 경우 추가되는 데이터가 front 및 rear가 된다. 큐에 데이터가 추가될 때 현 rear가 가리키는..
2023.07.19 -
[자료구조] Stack (feat. C 언어)
정의 스택(stack)은 자료 구조 중 선형 구조에 해당되며 한쪽 끝에서 자료의 삽입, 삭제가 모두 일어나는 후입선출(LIFO : Last In Fisrt Out) 방식으로 이루어져 있다. 자료를 삽입할 때는 push라고 하며 반대로 삭제할 때는 pop이라고 한다. 특징 선형 구조 후입선출(LIFO : Last In Fisrt Out) 삽입 - push, 삭제 - pop 함수 호출의 순서 제어, 인터럽트의 처리, 수식 계산 및 수식 표기법 등 연산 push 연산 : 스택이 비어있는 경우 추가되는 데이터는 바로 top이 되며 포인터는 null값을 가진다. 스택에 데이터가 추가될 때 추가되는 노드가 가리키는 포인터는 현 스택 top의 주소이며 이후 top은 자기 자신이 된다. pop 연산 : 데이터를 삭제 ..
2023.07.19