그래프의 정점을 2차원 배열로 표현하는 인접행렬
무방향 그래프: 양방향으로 이동이 가능하고 인접행렬 구조에서 대칭행렬을 이룬다
-> 간선이 몇개 없는데 정점의 수가 많을 경우, 2차원 배열의 크기가 커지고 남는 공간이 많아져 메모리가 낭비되어 비효율적이다
-> 반대로 간선의 수가 많으면 좋을듯
간선의 수가 적은 최소 그래프에서 효과적이다
공간복잡도가 O(V + E) (정점 수 + 간선 수)
간선 탐색시간은 O(E) -> 인접리스트를 순차적으로 탐색하기 때문에 간선 수 만큼
간선 추가/삭제 = O(1)
연속적인 메모리 공간에 데이터를 저장하는 자료구조
메모리 사용이 효율적
배열과 비슷한 느낌을 가진 동적 배열이다
크기가 동적으로 확장될 수 있는 동적배열 기반의 구조
배열과 비슷하게 요소의 삽입/삭제가 느리다
인덱스를 통해 바로 접근이 가능하다 탐색 O(1) 상수시간
size가 capacity 용량을 초과하게 되면 새 배열에 새 메모리를 할당하고 기존 데이터를 복사해야 하기 때문에 메모리 재할당 비용이 발생한다
마지막에 들어온 데이터가 가장 먼저 나가는 후입선출 구조 (LIFO)
삽입,삭제,맨위 요소 접근은 O(1)
하지만 탐색은 O(N)이다
-> 데이터에 접근 시 top부터 순차적으로 진행되기 때문
데이터가 뒤에서 들어오고 데이터가 앞에서 빠져나가는 구조
먼저 들어온 데이터가 먼저 나가는 선입선출 구조 (FIFO)
선형큐에서는 front와 rear가 계속 이동하여 rear가 가장 마지막 인덱스에 도달했을 때, 앞부분에 데이터를 더이상 삽입할 수 없어서 오버플로우가 터짐
완전 이진트리의 한 종류로 우선순위 큐를 구현할 수 있는 자료구조
주로 최대값과 최소값을 찾아낼때 사용된다
최대값이나 최소값이 root노드에 위치한다
계속 부모와 자식의 값을 비교하며 스왑한다
문자열 크기를 반환하는 함수 strlen() null문자는 포함하지 않는다
동적 크기 문자열을 관리하는 자료구조
문자열 추가, 비교, 문자열 크기 반환, 인덱스의 접근 가능
O(1)
KEY값과 VALUE값을 사용하여 데이터를 효율적으로 저장하고 검색할 수 있는 자료구조
해쉬함수를 사용하여 key값을 해시인덱스로 변환
해시충돌이 일어나서 체이닝 기법을 사용하게 될 경우 최악의 경우는 O(N)이다
-> 체이닝 기법은 주로 연결리스트를 사용하기 때문
검색,삽입,삭제가 빠르다 O(1) 상수시간
각 노드가 최대 2개까지의 자식노드를 가진 트리
노드를 순회하는 방법은 주로 재귀함수를 사용한다
root를 기준으로 순회방식을 다르게 할 수 있다
이진트리 기반의 탐색을 위한 자료구조이다
이진트리의 크기는 left < root < right 조건을 따른다
모든 서브 트리에서 적용되는 조건이다





