You are on page 1of 2

자료구조

자료를 효율적으로 저장하고 사용하기 위해서 자료의 특성에 따라


분류하고 구성하고 저장 및 처리하는 모든 작업

자료구조를 배워야 하는 이유
상황에 따라서 저장해야하는 구조의 방식이 다르기 때문에

자료구조의 종류
단순 구조
일반적인 변수(정수, 실수, 문자, 문자열, . . . )

선형 구조
데이터들의 앞 뒤 관계가 1:1 인 선형관계
리스트, 배열, 연결리스트, 스택, . . .

비선형 구조
데이터들간의 앞 뒤 관계가 1:N 또는 N:M 인 관계
트리, 그래프, . . .

-----------------------------------------------------------------------------------
-------------------------
노드(Node)
데이터 필드, 링크 필드
데이터를 담을 공간과, 다른 노드와의 관계를 저장할 공간
두 공간을 포함하고 있는 구조체로 표현한다.

리스트
유한한 원소의 나열된 묶음
인접리스트, 연결리스트

인접리스트(순차리스트, 선형리스트)
데이터의 논리적 순서와 같게 메모리에 저장이 된다.
논리적인 순서와 같게 물리적인 위치도 정해진다.
물리적인 순서와 논리적인 순서가 서로 같다.

배열

순차 자료구조의 단점
삽입 연산이나 삭제 연산 후에 연속적인 물리 주소를 유지하기 위해
원소들을 이동시키는 추가적인 작업이나 시간이 소요된다.
성능 저하로 직결

연결리스트
자료의 논리적 순서와 물리적 순서가 일치하지 않는 구조
각 원소(노드)에 저장되어 있는 다음 원소의 주소값에 의해 순서가 연결된다.
따라서 물리적인 순서를 맞출 필요가 없다
여러개의 작은 공간들을 연결해서 전체 구조를 표현한다

장점: 필요시에만 메모리를 사용하기 때문에 메모리 누수가 발생하지 않는다


삽입, 삭제 등에 용이하다
단점: 구현이 어렵다 데이터 하나당 링크필드가 필요해서 메모리의 사용도가 더 높다
각 데이터 조회시 순회가 필요하다

단순 연결 리스트 노드
데이터 필드 : 데이터 값
링크 필드 : next (다음 노드의 주소값 저장)

단순연결리스트의 구조
head 노드 --> 0 번 노드 --> 1 번 노드

head == 0 번 노드 --> 1 번 노드

You might also like