본문 바로가기

카테고리 없음

자료구조 (선형 자료구조)

반응형

자료구조를 사용하는 이유

 자료구조는 사전적으로는 '자료의 집합'을 의미하며, 자료들이 논리적으로 정의된 규칙에 의해 나열되어 있는 것입니다. 이러한 자료구조를 이용하면 다양한 장점들을 가지는 데 그중 다섯 가지를 살펴보면, 코드의 처리 시간을 단축할 수 있고, 데이터의 크기를 줄여 메모리 용량을 절약할 수 있으며, 데이터의 활용 빈도가 높아집니다. 또한 데이터를 수정하거나 관리하기에 용이하고, 잘 짜인 자료구조를 이용한 프로그램은 쉽고 간단하게 사용할 수 있습니다.

 

자료구조의 종류

 컴퓨터는 숫자, 문자, True/False라는 세가지의 기본 자료구조만 다룰 수 있습니다. 그러나 컴퓨터는 더욱 다양하고 세밀한 연산을 수행해야 하며, 세 가지의 기본 자료형을 조합해서 수행해야 하므로 더 다양한 자료구조가 필요합니다. 자료구조를 크게 분류하게 되면 '선형 자료구조'와 '비선형 자료구조'로 나눌 수 있습니다.

 

선형 자료구조

 선형 자료구조는 한 원소 뒤에 하나의 원소만이 존재하는 자료구조로, 자료들이 직선 형태로 나열되어 있고, 원소 간의 순서가 고려됩니다. 선형 자료구조는 리스트(선형/연결), 스택(stack), 큐(queue)로 나뉩니다. 우선 선형 리스트(Linear List) 자료구조는 데이터의 입출력이 데이터 열의 양단에서만 행할 수 있는 것으로, 배열(array) 타입으로 정의됩니다. 이는 데이터가 많아지고 속성이 같은 데이터를 그룹으로 관리할 필요가 있을 때 사용하게 됩니다. 선형 리스트 구조는 접근이 빠르고 간단하기에 많이 사용되지만, 배열 요소의 순서를 바꾸고, 데이터를 삭제한 후 빈 배열을 처리하는 것이 어렵다는 단점을 가집니다.

 연결리스트(Linked List)는 각 데이터를 포인터로 연결해서 관리해 주는 자료구조로, 배열(array)과는 다르게 데이터 저장 시 데이터를 저장하는 공간과 그다음에 나올 데이터가 저장된 공간을 가리키는 주소 값을 동시에 가집니다. 이는 데이터의 크기가 가변적이지 않아 크기가 모자랄 때 메모리를 더 할당하고 배열 데이터를 복사해야 하는 배열과 달리 다음 데이터의 주소 값을 추가만 하며 크기를 마음대로 늘릴 수 있다는 장점을 가집니다. 그러나 접근 속도가 배열(array)에 비해 느려서 조회보다는 수정 및 삭제가 잦은 데이터에서 사용합니다.

 스택(stack)은 모든 원소들의 삽입과 삭제가 리스트의 한쪽 끝에서만 수행되는 제한 조건을 가지는 선형 구조로, 삽입과 삭제가 일어나는 리스트의 끝인 top에서 새로운 원소를 삽입하는 push와 가장 최근 삽입된 원소를 제거하는 pop을 수행하는 LIFO(Last in First Out) 구조를 가집니다.

 마지막으로 큐(queue)는 리스트의 한쪽 끝에서 원소들이 삭제되고, 반대쪽 끝에서는 원소의 삽입만 가능하도록 만들어진 구조로, FIFO(First in First Out) 구조를 가집니다.

반응형