메모리공간이나 접근, 연산시간 등의 관점에서 효율적으로 자료를 저장하고 관리할 수 있게 만든 모델
Stack, Queue, Array, LinkedList 는 Linear 구조에 속하는 자료구조이다.
LIFO구조
push,pop,peek 메서드를 통해 기능을 구현
이전에 한 작업을 기억하거나 되돌려야 하는 경우에 많이 사용됨
(괄호 갯수 새기)
FIFO구조
enqueue, dequeue 메서드를 통해 기능 구현
자료가 연속적으로 저장되는 구조(순차적)
인덱스를 사용할 수 있다
검색, 접근, 정렬 등에 강점을 가진다 (Array에 존재하는 모든 요소에 접근하는 속도는 동일하다)
데이터의 추가, 삭제의 경우 배열의 복사와 이동이 일어나야해서 성능이 떨어진다
자료가 비연속적으로 저장된다(순서 없음)
하나의 노드는 자기자신의 데이터와 다음 연결된 노드의 주소만 가진다
인덱스가 없으므로 검색의 경우 성능이 떨어진다(처음부터 하나하나 찾아야 함)
데이터 추가, 삭제의 경우 앞,뒤 노드의 주소만 변경해주면 되므로 빠르다
Class Node{
Node next;
Object obj;
}
자료구조 | 접근시간 | 중간 추가,삭제 | 순차적 추가,삭제 |
---|---|---|---|
Array | 훨씬빠름 | 느림 | 빠름 |
LinkedList | 느림 | 훨씬 빠름 | 상대적으로느림 |
순차적 추가,삭제는 Array가 더 빠르므로 Stack을 구현하려면 Array이용하는 것이 효율적
Queue를 구현하려면 LinkedList를 이용하는 것이 효율적
참고 사이트
https://afteracademy.com/blog/introduction-to-data-structure/
https://www.scaler.com/topics/data-structures/what-is-data-structure/