자료구조(data structure)는 컴퓨터 과학에서 자료(data)에 효율적으로 접근하고 수정할 수 있도록 자료를 조직하고, 관리하고, 저장하는 것을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.
정리하자면, 자료구조란
1) 데이터 간에 어떤 관계가 있으며,
2) 여러 데이터들의 묶음을 어떻게 저장할 것이고,
3) 데이터에 적용할 수 있는 함수나 명령은 무엇인지(어떻게 데이터를 사용할 것인지)
정의한 것이다.
자료를 더 효율적으로 저장하고, 관리하기 위해 사용하며, 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있다.
자료의 처리를 보다 효율적으로 하기 위해서 아래와 같은 사항을 고려하여 선택/사용해야 한다.
정수, 실수, 문자 및 문자열과 같이 컴퓨터가 기본적으로 제공하는 자료형.
기본 자료형을 모아서 사용자가 배열, 구조체, 클래스를 선언해서 사용하기도 하는데 이를 사용자 정의 자료형이라 한다.
구조체(structure)는 '타입이 다른 데이터를 하나로 묶는 방법'이다.
C같은 다른 언어에서는 배열로 타입이 같은 데이터만 묶을 수 있기 때문에 타입이 다른 데이터들을 하나로 묶기 위해 구조체라는 것을 사용한다.
결론부터 말하자면, 자바스크립트에는 구조체라는 개념이 없다. 대신 자바스크립트에서는 배열로 타입이 다른 데이터들을 묶을 수 있다.// JavaScript에서는 이런 것이 가능하다. const various = [7, 'string', function(){console.log('this is function')}, [], {}, false]; const typeOfElem = various.map(elem => typeof elem); console.log(typeOfElem); // ["number", "string", "function", "object", "object", "boolean"]
자료 간 관계가 1 대 1로 연결된 구조. 데이터들이 일렬로 쭉 저장되어 있는 형태
Stack과 Queue가 선형구조에 해당한다.
데이터가 (일렬이 아닌) 트리 형태로 저장되어 있다고 생각하고 사용하는 자료구조.
Graph와 Tree가 비선형구조에 해당한다.
다양한 자료구조의 데이터를 파일에 저장하는 방식