1- 자료 구조 정리

양동귀·2024년 7월 24일

자료구조

목록 보기
1/10
post-thumbnail

배열 Array

동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법
간단하게 하나의 변수에 같은 타입의 데이터'들'을 한번에 넣어두려고 만들어진 자료구조

특징

인덱스 값을 갖는다

요소에 빠르게 접근이 가능하다 (집주소 보고 찾아가는 모양)

연속된 메모리 공간에 저장된다

배열을 선언하여 데이터를 넣으면 인덱스 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 방식
반대쪽 출구가 없는 원통에 데이터를 쌓고, 원통의 입구 쪽 부터 데이터를 다시 꺼내쓰는 형태

데이터를 쌓고 맨 마지막 부터 써야 하는 곳

  • 페이지 뒤로가기
  • 실행 취소 (undo)

특징

선입 선출 (First - in - First -out) FIFO 방식
순서대로 줄 서서 먼저 온 데이터를 처리 하는 형태

데이터를 순서대로 처리해야 하는 곳

  • 같은 우선 순위의 작업 예약
  • 은행업무 (송금 = 출금 -> 상대방 입금)

0개의 댓글