...
탐색 : O(1) _접근하고자 하는 인덱스를 알고 있어야 함
-> 순차적으로 탐색시 O(n)
삽입 / 삭제 :
배열 :
연결 리스트 :
배열(Array) | 연결 리스트 (Linked List) |
---|---|
정적 자료구조 | 동적 자료구조 |
크기를 미리 정함 | 크기를 정하지 않아도 됨 |
접근, 탐색 용이 | 추가, 삭제 용이 |
인덱스로 접근 | 노드로 접근 |
: 어떤 자료를 쌓아서 올려놓은 형태의 자료구조
스택의 구조를 '후입선출' 즉, FILO(First In Last Out)의 구조
자료의 삽입과 삭제는 한 곳(top)에서만 이루어 진다.
스택 언더플로우(Stack Underflow)
->스택이 비어있을 때, 자료를 꺼내려고 시도를 하면 발생
스택 오버플로우(Stack Overflow)
->반대로, 스택이 꽉 차있을 때 자료를 넣으려고 하면 발생
ex) 웹 브라우저 뒤로가기, 문서작업(ctrl + z), 역순 문자열 만들기, 재귀적 알고리즘
: 데이터들이 일렬로 줄 서서 기다리는 형태의 자료구조
마치 음식점 번호표나 놀이기구 대기표 같다.
: 우선순위 큐 또한 '큐'와 비슷하지만 다른 점은 들어간 순서에 상관없이, 우선순위가 높은 데이터가 먼저 나오는 자료구조
- 배열이나 연결 리스트로 쉽게 구현이 가능
- but 이들은 데이터 삽입/삭제 과정에서 데이터를 밀거나 당겨야 하는 연산이 필요
- 단점 : 삽입 위치를 찾기 위해 모든 데이터를 비교해야 함
=> 일반적으로 '우선순위 큐'는 힙(Heap)을 이용해서 구현한다.
'우선순위 큐'를 위해 만들어진 자료구조
완전 이진트리 형태의 자료구조
-> 이진트리랑 다르게 중복값 허용 ⭕
최댓값, 최솟값을 찾을 때 유리(빨리 찾아냄)
부모 노드는 항상 자식 노드보다 큰 값을 가진다.
-> 자식 노드들의 정렬 상태는 중요치 x, 루트 노드의 값은 가장 큰 값이다.
부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리
부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리