순차 자료구조와 선형리스트
순차 자료구조와 선형 리스트
순차 자료구조 (Sequential Data Structure)
- 정의 : 데이터를 논리적 순서대로 메모리에 연속적으로 저장하는 구현 방식입니다.
- 핵심 특징 : 데이터의 논리적 순서와 메모리에 저장된 물리적 순서가 항상 일치합니다.
- 장점 : 인덱스를 통해 데이터에 빠르게 접근할 수 있습니다.
- 단점 : 삽입/삭제 시 데이터를 이동시켜야 하므로 비효율적일 수 있습니다. (↔ 연결 자료구조)
선형 리스트 (Linear List)
- 정의 : 데이터를 '나열'하는 가장 기본적인 자료구조로, 데이터들 간에 순서가 있는 리스트입니다.
- 구조 : 리스트의 각 데이터를 요소(element) 또는 노드(node)라고 부릅니다. 각 노드는 데이터와 다음 노드를 가리키는 포인터(논리적 연결)로 구성됩니다.
- 헤드 노드(Head Node) : 리스트의 시작
- 테일 노드(Tail Node) : 리스트의 끝
선형 리스트의 구현 방식
- 선형 순차 리스트 (Linear Sequential List) : 배열을 사용하여 구현. 일반적으로 '선형 리스트'라고 부릅니다.
- 선형 연결 리스트 (Linear Linked List) : 포인터를 사용하여 구현. 일반적으로 '연결 리스트'라고 부릅니다.
선형 리스트의 연산과 알고리즘 (배열 기반)
배열을 사용한 선형 리스트에서는 논리적 순서를 유지하기 위해 데이터의 물리적 이동이 필요합니다.
삽입 (Insertion) 연산
- 삽입할 위치를 찾습니다.
- 삽입할 위치부터 마지막 요소까지 모든 데이터를 한 칸씩 뒤로 이동시켜 빈자리를 만듭니다.
- 만들어진 빈자리에 새로운 데이터를 삽입합니다.
- 이동 횟수 : 뒤에서부터 이동해야 데이터 덮어쓰기를 방지할 수 있습니다.
삭제 (Deletion) 연산
- 삭제할 데이터를 찾습니다.
- 삭제할 데이터의 다음 위치부터 마지막 요소까지 모든 데이터를 한 칸씩 앞으로 당겨 빈자리를 채웁니다.
- 이동 횟수 : 앞에서부터 이동해야 빈 공간을 효율적으로 채울 수 있습니다.
선형 리스트의 응용 및 구현
선형 리스트, 배열은 다양한 수학적 개념을 표현하는 데 사용됩니다.
행렬 (Matrix) 표현
- 행렬은 행과 열로 구성된 2차원 자료구조로, 2차원 배열을 사용해 자연스럽게 표현할 수 있습니다.
- 전치 행렬(Transpose Matrix) : 원래 행렬의 행과 열을 맞바꾼 행렬입니다.
- 희소 행렬(Sparse Matrix) : 대부분의 요소가 0인 행렬입니다.
- 2차원 배열로 그대로 저장하면 0을 저장하기 위한 메모리 공간 낭비가 심합니다.
- 해결책: 0이 아닌 요소만 <행, 열, 값>의 형태로 추출하여 2차원 배열에 저장하면 메모리를 크게 절약할 수 있습니다.
다항식 (Polynomial) 표현
- 다항식 P(x) = a_n * x^n + ... + a_1 * x^1 + a_0 * x^0을 선형 리스트로 표현할 수 있습니다.
- 1차원 배열 표현: 배열의 인덱스를 다항식의 '차수'로, 배열의 값을 '계수'로 사용하는 방식입니다.
- A[i] = x^i 항의 계수
- 단점: 3x^1000 + 4 와 같이 최고 차수는 높지만 항의 개수가 적은 '희소 다항식'의 경우, 중간의 사용하지 않는 공간 때문에 극심한 메모리 낭비가 발생합니다.
- 2차원 배열 표현 (희소 다항식): <계수, 차수> 쌍을 배열에 저장하여 메모리 낭비를 줄입니다.
728x90
'자료구조' 카테고리의 다른 글
| 연결 자료구조와 연결 리스트(2) (0) | 2025.10.22 |
|---|---|
| 연결 자료구조와 연결 리스트(1) (0) | 2025.10.21 |
| C언어 문법 (0) | 2025.09.26 |
| 알고리즘 기초 (0) | 2025.09.26 |
| 자료구조란? (0) | 2025.09.24 |