동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법
간단하게 하나의 변수에 같은 타입의 데이터'들'을 한번에 넣어두려고 만들어진 자료구조
요소에 빠르게 접근이 가능하다 (집주소 보고 찾아가는 모양)
배열을 선언하여 데이터를 넣으면 인덱스 0 값부터 차례로 다음 메모리에 하나씩 저장한다
인접한 요소에 접근하기 용이하다 (옆집 금방 찾아 갈 수 있는것 처럼)
중간에 삽입이나 삭제를 하게 된다면 뒷쪽 배열에 담긴 값들을 모두 이동 시켜야 한다 시간적으로 손해.
연속된 노드의 연결체
배열이긴 한데, 따로 떨어진 메모리 주소를 갖는다 => 값 + 다음 값 주소 = 노드
어떤 값 하나에 접근할때 이전 노드의 주소를 확인해서 가야해서, 시작 값 부터 찾는 값 이전 값까지 주소를 확인해서 가야한다
삽입과 삭제 시에 참조 주소 값을 바꾸면 되기 때문에 배열보다 빠른 경우가 있다
단일 연결 리스트 - 노드(값, 다음 주소 값), 맨마지막(값, null)
이중 연결 기스트 - 노드(값, 이전 주소 값, 다음 주소 값), 맨 마지막(값, 이전 주소 값, null)
원형 연결 리스트 - 노드(값, 다음 주소 값), 맨 마지막(값, 첫번째 노드 주소 값)
class Node {
constructor(data){
this.data = data;
this.next = null;
}
}
let head = new Node("a");
head.next = new Node("b");
head.next.next = new Node("c");
head.next.next.next = new Node("d");
후입 선출(Last - in - First - out) LIFO 방식
반대쪽 출구가 없는 원통에 데이터를 쌓고, 원통의 입구 쪽 부터 데이터를 다시 꺼내쓰는 형태
데이터를 쌓고 맨 마지막 부터 써야 하는 곳
선입 선출 (First - in - First -out) FIFO 방식
순서대로 줄 서서 먼저 온 데이터를 처리 하는 형태
데이터를 순서대로 처리해야 하는 곳