데이터 구조가 선형이라는 것은 데이터 구조를 구성하는 요소들이 서로 인접해 순차적인 방식으로 정렬되어 있음을 뜻한다.
이러한 데이터 구조는 이해하기 쉬울 뿐더러 프로그램 개발할 때 사용하기 쉽다.
배열 , 리스트 : 범용적인 데이터 구조. 모든 데이터 구조가 배열이나 리스트에서 파생됐거나 어떤 방식으로든 배열과 리스트를 사용하기 때문이다.
배열과 리스트를 이해하면 다른 데이터 구조를 다루기 위한 기반 지식
랜덤 접근과 순차적 접근
직접 접근이라하는 랜덤 접근은 동일한 시간에 배열과 같은 순차적인 데이터가 있을 때 임의의 인덱스에 해당하는 데이터에 접근할 수 있는 기능.
데이터를 저장된 순서대로 검색해야 하는 순차적 접근과는 반대
✨ 배열은 자료형이 같은 요소들을 저장한다.
배열의 특별한 유형. 리스트의 요소는 흩어진 상태로 메모리에 저장된다.
이때문에 연결 리스트(Linked List라고도 한다)는 메모리를 더 효과적으로 사용
리스트의 요소는 데이터 요소와 포인터(=참조)의 쌍으로 구성
포인터는 리스트 내의 바로 다음 요소가 저장된 메모리 위치를 가리킨다
연결 리스트에서 데이터 요소와 다음 요소를 가리키는 포인터의 쌍을 '노드(node)' 라고 한다
연결리스트는 해당 리스트에 진입하는 지점이 있도록 구성, 이러한 진입점을 '헤드' 라고 한다.
노드 하나가 다른 노드를 가리키는 포인터 하나를 갖는 유형의 연길 리스트를 단방향 연결 리스트라 한다.
단방향 연결 리스트에서 마지막 노드는 다른 노드를 가리키지 않으므로 포인터는 널값을 갖는다.
최상단에서만 데이터 요소를 삭제 및 추가가능.
이는 특정 요소를 검색하는 속도 재한