자료구조&알고리즘

선형 리스트(Lenear List) 개요

CalebHong 2022. 2. 14. 12:19

선형구조

- 스택

 * 스택 자료구조에 먼저 저장된 것이 꺼내어 쓸 때는 제일 나중에 나옴

 * 반대로 가장 최근에 저장된 것이 꺼내어 쓸 때는 제일 먼저 나옴

 * 만약 자료들의 나열 순서를 바꾸고 싶다면 스택에 집어 넣었다가 꺼내면 역순으로 바뀜

 

- 큐

 * 스택과 반대로 큐 자료 구조에 먼저 저장된 것이 제일 먼저 나옴

 * 가장 나중에 저장된 것이 꺼내어 쓸 때는 가장 나중에 나옴

 

- 환형 큐

 * 한정된 길이 안에서 부수적인 작업 없이 읽고 쓰기를 할 수 있는 큐임

 * 원형으로 구성된 큐

 

- 덱

 * 양쪽에서 넣기와 빼기를 할 수 있는 일반화된 선형 구조임

 

비선형구조

- 그래프

 * 꼭지점과 꼬지점을 잇는 변으로 구성됨

 

- 유향/무향 그래프

 * 변이 방향성을 갖는지 갖지 않는지에 따른 그래프의 분류임

 

- 트리

 * 뿌리와 뿌리 또는 다른 꼭지점을 단 하나의 부모를 갖는 꼭지점들로 이루어진 구조

 * 부모 자식 관계는 변으로 표현됨

 cf_1) 무향 그래프의 경우 순환이 없는 연결 그래프를 뜻함

 cf_2) 무향 그래프의 경우 변의 방향은 보통 부모를 기리키도록 구현됨

 

- 이진 트리

 * 자식이 최대 두 개인 트리

 

- 힙

 * 이진 트리의 일종으로 이진 트리에 어떤 특성을 부여한 것이라 할 수 있음(계층 순서화)

 

리스트와 선형 리스트

1. 리스트(List)

- 리스트의 정의

 * 자료를 나열한 목록

 * 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화시킨 것

 * 데이터 삽입, 삭제, 검색 등 필요 작업을 가함

 * 스택과 큐는 리스트의 특수한 경우에 해당

 

2. 선형 리스트

- 선형 리스트의 정의

 * 순서 리스트(Ordered List)

 * 자료들 간에 순서를 갖는 리스트

 

선형 리스트의 자료구조

1. 표현 형식

- 리스트의 표현 형식

 * 리스트 이름 = (원소1, 원소2, ..., 원소n)

 * 선형 리스트에서 원소를 나열한 순서는 원소들의 순서가 됨

 

2. 저장

- 선형 리스트의 저장

 * 원소들의 논리적 순서와 같은 순서로 메모리에 저장

 * 순차 자료구조

  - 원소들의 논리적 순서 = 원소들이 저장된 물리적 순서

 

- 순차 자료구조의 원소 위치 계산

 * i번째 원소의 위치 = a + (I-1) x ℓ

  - 선형 리스트가 저장된 시작 위치 : a

  - 원소의 길이 : ℓ (byte의 개수)

 

선형 리스트의 삽입과 삭제

1. 삽입

- 선형 리스트의 원소 삽입

 * 선형 리스트 중간에 원소가 삽입되면, 그 이후의 원소들은 한자리씩 자리를 뒤로 이동하여 물리적 순서를 논리적 순서와 일치시킴

- 원소의 삽입 방법

 1) 원소를 삽입할 빈 자리를 반들기

  - 삽입할 자리 이후의 원소들을 한자리씩 뒤로 자리 이동(연산의 지연 원인)

 2) 준비한 빈 자리에 원소 삽입하기

 

- 삽입할 자리를 만들기 위한 자리 이동 횟수

 * n+1개의 원소로 이루어진 선형 리스트에서 k번 자리에 원소를 삽입하는 경우

  : k번 원소부터 마지막 인덱스 n번 원소까지 (n-k+1)개의 원소를 이동

 

2. 삭제

- 선형 리스트의 원소 삭제

 * 선형 리스트 중간에서 원소가 삭제되면, 그 이후의 원소들은 한자리씩 자리를 앞으로 이동하여 물리적 순서를 논리적 순서와 일치시킴

- 원소 삭제 방법

 1) 원소 삭제하기

  - 삭제한 자리 이후의 원소들을 한자리씩 앞으로 자리 이동(지연 원인)

 

 

- 삭제 후, 빈자리를 채우기 위한 자리 이동 횟수

* n+1개의 원소로 이루어진 선형 리스트에서 k번 자리에 원소를 삭제한 경우

  : (k+1)번 원소부터 마지막 n번 원소까지 (n-(k+1) + 1)개의 원소를 이동

이동 횟수 = n-(k+1)+1) = n-k

 

'자료구조&알고리즘' 카테고리의 다른 글

리스트와 단순 연결 리스트  (0) 2022.02.15
선형 리스트의 구현  (0) 2022.02.14
알고리즘 분석  (0) 2022.02.11
자료구조와 알고리즘  (0) 2022.02.11
추상 데이터형  (0) 2022.02.10