1. Linked List: 선형 구조, 비연속적, 포인터 사용해 각 데이터 연결
•Node(노드)
- Data(데이터)
- Pointer(포인터): 다음 노드의 주소값이 담긴 변수
•Pointer(포인터): 다음 노드가 어디에 위치하는지 알려주는 표지판

Array | Linked List | |
장점 | 데이터 탐색, 정렬 편리 |
데이터 추가, 삽입, 삭제가 용이 (포인터로 연결) |
탐색속도 |
빠르다 (index로 접근) |
(비교적) 느리다 |
Property
* Head : 첫 번째 노드 판별
Methods
1. Add(element): 맨 끝에 element 추가
2. Remove(element): element를 제거
3. insertAt(element, index): 주어진 index에 element 추가
4. 탐색
https://opentutorials.org/module/1335/8821
2. Graph: 비선형 구조, node(또는 vertice)와 edge로 이루어진
* In the above Graph, the set of vertices V = {0,1,2,3,4} and the set of edges E = {01, 12, 23, 34, 04, 14, 13}.
•Node(노드) 또는 Vertice
•Edge: 두 개의 노드를 연결하는 선이나 호(arc)
인접행렬: 노드를 2차원 배열로 만든 것 --> 공간을 많이 차지
연결리스트: 노드의 개수 + 간선의 개수 만큼 공간을 차지
Property
Methods
-
addVertex(v) – It adds the vertex v as key to adjList and initialize its values with an array.
-
addEdge(src, dest) – It adds an edge between the src and dest.
https://ko.khanacademy.org/computing/computer-science/algorithms
알고리즘 | 컴퓨터과학 | 컴퓨팅 | 칸아카데미
이 메시지는 외부 자료를 칸 아카데미에 로딩하는 데 문제가 있는 경우에 표시됩니다. 웹 필터가 올바르게 작동하지 않으면 도메인 *. kastatic.org과 *.kasandbox.org이 차단되어 있는지 확인하세요.
ko.khanacademy.org
3. Tree : 계층형 구조
* Binary Tree(이진트리): 각각의 노드가 최대 2개의 자식 노드(좌우)를 가지는 자료구조
-
데이터
-
왼쪽 자식노드의 포인터
-
오른쪽 자식노드의 포인터
4. Binary Search Tree(이진탐색트리): 계층형 구조
* 규칙
-
노드의 왼쪽 서브트리에는 그 노드의 값보다 작은 값들을 지닌 노드들
-
노드의 오른쪽 서브트리에는 그 노드의 값과 같거나 큰 값들을 지닌 노드들
-
좌우 하위 트리는 각각이 다시 이진 탐색 트리
* BST 삭제
장점: 탐색 속도가 빠르다
편향 트리를 최대한 피해야 한다
https://velog.io/@shaqok/Data-Structure-Linked-List-Graph-Tree-Binary-Search-Tree-Hash-Table
5. Hash Table
- Hash Function(해시함수): 주어진 키(key)를 통해 요소에 더 빨리 접근, 복호화가 불가능함
ex) hash function H(x) maps the value x at the index x%10 in an Array.
For example, if the list of values is [11, 12, 13, 14, 15] it will be stored at positions {1, 2, 3, 4, 5} in the array or Hash table respectively.
- Hash Table: 연관배열 구조를 이용하여 키(key)에 결과 값(value)을 저장하는 자료구조
연관배열 구조
(associative array)
: 키(key) 1개와 값(value) 1개가 1:1로 연관되어 있는 자료구조이다. 따라서 키(key)를 이용하여 값(value)을 도출할 수 있다.
- 키(key)는 해시 함수를 통해 해시(hash)로 변경이 되며 해시는 값(value)과 매칭되어 저장소(Bucket, Slot)에 저장
* 해시 알고리즘의 핵심은 충돌이 나지 않는 것 (속도 때문에 어느정도 충돌은 감안해야 함)
-- 충돌나는 걸 커버할 수 있는 충돌 알고리즘을 같이 구현
해쉬 함수가 만들어주는 인덱스는 유한한데 입력값은 무한데라서 충돌이 일어나고 충돌이 안일어날려면 인덱스가 많아져야하는데 많아지면 무거워서 느려진다
- Limited Array: 자바스크립트의 동적배열을 동적배열이 아닌 것으로 만들어 주는 것--> 사이즈를 제한한다
- getIndexBelowMaxforkey
https://www.reddit.com/r/programming/comments/86s6am/an_intuitive_visualization_of_hash_tables/
An intuitive visualization of hash tables
Posted in r/programming by u/jeffacce • 1,895 points and 95 comments
www.reddit.com
* Reference
'CODESTATES > Immersive' 카테고리의 다른 글
[TIL] 1/3: Inheritance Patterns - 1. ES6/ ES6 new features (0) | 2020.01.03 |
---|---|
[TIL] 12/31: Time Complexity (0) | 2019.12.31 |
[TIL] 12/27: Basic Data Structure (0) | 2019.12.27 |
[TIL] 12/27: Object - 1. OOP(Object Oriented Programming)가 무엇인지? (0) | 2019.12.27 |
[TIL] 12/26: Recursion review (0) | 2019.12.27 |