1. 배열(Array)
배열은 특정 자료형들이 메모리 공간상에 연속적으로 이루어져 있는 자료구조이다.
배열의 특징
- 메모리상에 연속적으로 저장되는 특성 때문에, 데이터 접근 속도가 빠르다.
- 인덱스를 통해 접근하기 때문에 어떤 열에 접근하더라도 접근하는 속도가 같다.
- 배열의 최대크기를 변경 할 수 없다.
- 삽입/삭제 시 자료의 이동이 생기기 때문에 오버헤드가 발생한다.
2. 연결리스트(LinkedList)
연결리스트는 여러개의 노드들이 연결된 형태의 자료구조이다. 메모리상에 노드들이 흩어져 있으며, 각각의 노드는 다음 노드에 대한 위치 정보를 저장하고 있다.
연결리스트의 특징
- 노드는 자료와 링크로 구성된다.
- 배열 보다 삽입, 삭제 연산이 빠르다.
- head와 tail이 존재한다. head는 가장 첫번째 노드를 의미하고, tail은 가장 마지막 노드를 의미한다.
- 자료 외에 링크를 저장하는 변수가 필요함으로 배열 보다 메모리 효율이 떨어진다.
- 링크가 중간에 끊어지면 다음 노드를 찾는 것이 어렵다.
- 단순 연결 리스트, 이중 연결리스트, 환형 연결 리스트가 존재한다.
3. 스택
가장 최근에 저장한 자료를 먼저 꺼내는 LIFO(Last In First Out)방식의 자료 구조이다.
스택의 특징
- 리스트의 마지막 인덱스에서 삽입과 삭제 연산을 수행한다.
- 마지막으로 저장된 자료의 인덱스를 저장하며 해당 인덱스를 TOP이라고 부른다.
- 자료를 저장하는 연산을 PUSH라고 한다.
- 자료를 꺼내는 연산을 POP이라고 한다.
- 함수 호출 순서 제어, 인터럽트 처리, 수식계산 등 에서 사용한다.
4. 큐
가장 먼저 저장한 자료를 먼저 꺼내는 FIFO(First In First Out) 방식의 자료구조이다.
큐의 특징
- 가장 먼저 저장한 자료의 위치를 기억하며 Front라고 부른다.
- 새로운 자료를 보관할 위치를 기억하며 Rear라고 부른다.
- 큐에 자료를 보관하는 연산을 Put 혹은 Enqueue라고 부른다.
- 큐에 자료를 꺼내는 연산을 Get 혹은 Dequeue라고 부른다.
- 스케줄러, 대기순서에 따라 처리되는 연산 등 에서 사용한다.
참조 : http://ehpub.co.kr/tag/%EC%8A%A4%ED%83%9D%EC%9D%98-%ED%8A%B9%EC%A7%95/
'IT > 자료구조 & 알고리즘' 카테고리의 다른 글
[알고리즘] 퀵 정렬 (0) | 2020.03.08 |
---|---|
[자료구조] 트리와 그래프 (0) | 2020.03.04 |
[Java] 쉘 정렬 (Shell Sort) (0) | 2019.12.06 |
[Java] 버블 정렬 (Bubble Sort) (0) | 2019.12.06 |
[Java] 삽입 정렬 (Insertion Sort) (0) | 2019.12.06 |