📔 학습한 내용을 정리하기 위해 작성하는 게시글입니다.
대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조(자료의 집합)을 의미한다.
: 데이터 구조를 구성하는 요소들이 서로 인접해 순차적인 방식으로 정렬
정의 : 자료형이 같은 데이터를 하나의 변수 이름으로 모아 순차적으로 저장 및 정렬하는 자료구조
장점 : 각 요소에 인덱스가 부여되므로 검색이 용이함
단점 : 데이터의 추가,삭제 시 배열 내 다른 데이터의 순서를 다시 매겨야 하므로 많은 시간이 걸림, 리스트의 길이가 고정적
노드(node) - 데이터의 저장 단위, 연결리스트의 각 원소, 데이터 요소와 다음 요소를 가리키는 포인터(주소값)의 쌍
장점 : 리스트의 길이가 가변적(배열의 단점 커버), 데이터의 추가,삭제를 배열보다 간단하게 할 수 있음
단점 : 저장 공간 효율이 낮음(포인터를 위한 저장 공간 필요),
데이터 탐색 속도가 느림(포인터를 이용해 연결노드를 찾는 시간 필요),
중간에 위치한 데이터 삭제 시, 삭제된 데이터의 앞뒤 데이터의 연결을 재구성하는 부가적인 작업이 필요
배열과의 차이점 : 인덱스가 없음(원소들을 엮어서 관리함)
LIFO(last in first out) : 스택에 마지막으로 추가된 요소를 먼저 삭제하는 스택 구조 → 후입선출 데이터 구조(세로로 된 바구니 모양)
장점 : 데이터의 저장 및 읽기 속도가 빠름, 구조가 단순하여 구현이 쉬움
단점 : 저장될 데이터의 최대개수를 미리 정해야 함(저장 공간 확보 필요) → 저장 공간의 낭비가 발생할 수 있음
FIFO(first in first out) : 큐에 가장 먼저 추가된 요소가 우선적으로 삭제되는 선입선출 데이터 구조(줄 서있는 모양)
장점 : FIFO방식으로 인해 데이터 삭제 시 재정렬이 필요 없음
운영체제(OS)에서 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨
정의 : 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 Graph의 특수한 형태로, 노드들이 부모와 자식 관계로 이루어진 자료구조(노드와 브랜치를 이용하여 구성된 계층 구조)
계층이 있는 데이터를 표현하기에 적합
트리를 기반한 이진트리를 이용하여 탐색 알고리즘 구현에 자주 사용
정의 :정점(Vertex)과 간선(Edge)으로 이루어진 자료구조
장점 : 새로운 데이터의 추가, 삭제가 용이하고 구조를 응용하기에 적합
단점 : 데이터간 충돌이 일어날 수 있음
<이재환의 자바 프로그래밍 입문>
<코드 없는 알고리즘과 데이터 구조>
https://andrew0409.tistory.com/148
https://devraphy.tistory.com/88
https://pyoungt.tistory.com/166
https://hudi.blog/ds-linked-list/
https://lucaseo.github.io/posts/2021-02-01-python-datastructure-linked-list/
https://mangkyu.tistory.com/89
https://zrr.kr/T8qK
https://zrr.kr/MqLy