순차 자료구조의 개념
구현할 자료들을 논리적 순서로 메모리에 연속 저장하는 구현 방식
C 프로그래밍에서 순차 자료구조의 구현 방식 제공하는 프로그램 기법은 배열
리스트 : 자료를 구조화하는 가장 기본적인 방법은 나열하는 것
선형 리스트Linear List
순서 리스트Ordered List
자료들 간에 순서를 갖는 리스트
선형 리스트의 저장
순차 방식으로 구현하는 선형 순차 리스트(선형 리스트)
• 순차 자료구조는 원소를 논리적인 순서대로 메모리에 연속하여 저장
연결 방식으로 구현하는 선형 연결 리스트(연결 리스트)
선형 리스트에서 원소 삽입
선형리스트 중간에 원소가 삽입되면,
그 이후의 원소들은 한 자리씩 자리를 뒤로 이동하여 물리적 순서를 논리적 순서와 일치시킴
순차적인게 장점이지만, 자리를 이동하는데에 시간이 걸림
원소 삽입 방법
① 원소를 삽입할 빈 자리 만들기 ☞ 삽입할 자리 이후의 원소들을 한 자리씩 뒤로 자리 이동
② 준비한 빈 자리에 원소 삽입하기
삽입할 자리를 만들기 위한 자리 이동 횟수
• (n+1)개의 원소로 이루어진 선형 리스트에서 k번 자리에 원소를 삽입하는 경우 : k번 원소부터 마지막 인덱스 n번 원소까지 (n-k+1)개의 원소를 이동
− 이동횟수 = n-k+1 = 마지막 원소의 인덱스 - 삽입할 자리의 인덱스 +1
− 예) n=5, k=2
선형 리스트에서 원소 삭제
선형리스트 중간에서 원소가 삭제되면, 그 이후의 원소들은 한 자리 씩 자리를 앞으로 이동하여 물리적 순서를 논리적 순서와 일치시킴
원소 삭제 방법
① 원소 삭제하기
② 삭제한 빈 자리 채우기 ☞ 삭제한 자리 이후의 원소들을 한 자리씩 앞으로 자리 이동
삭제 후, 빈 자리를 채우기 위한 자리이동 횟수
• (n+1)개의 원소로 이루어진 선형 리스트에서 k번 자리의 원소를 삭제한 경우 : (k+1)번 원소부터 마지막 n번 원소까지 (n-(k+1)+1)개의 원소를 이동
− 이동횟수 = n-(k+1)+1 = n-k = 마지막 원소 인덱스-삭제한 자리 인덱스
− 예) n=6, k=2
구현
2차원 배열의 물리적 저장 방법
• 2차원의 논리적 순서를 1차원의 물리적 순서로 변환하는 방법 사용
• 행 우선 순서 방법row major order
− 2차원 배열의 첫 번째 인덱스인 행 번호를 기준으로 사용하는 방법
− sale[0][0]=63, sale[0][1]=84, sale[0][2]=140, sale[0][3]=130, sale[1][0]=157, sale[1][1]=209, sale[1][2]=251, sale[1][3]=312
− 원소의 위치 계산 방법 : 행의 개수가 ni 이고 열의 개수가 nj 인 2차원 배열 A[ni ][nj ]의 시작주소가 α이고 원소의 길이가 ℓ 일 때, i행 j열 원소 즉, A[i][ j]의 위치는?
α + (i x nj+j)xℓ
0행 ~2행, 4열의 표
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 |
A[2][2] 의 위치는?
시작주소 : 0
0 + ( 2 x 4 + 2) x 1 = 10
왜 1임근데?
• 열 우선 순서 방법column major order
− 2차원 배열의 마지막 인덱스인 열 번호를 기준으로 사용하는 방법
− sale[0][0]=63, sale[1][0]=157, sale[0][1]=84, sale[1][1]=209, sale[0][2]=140, sale[1][2]=251, sale[0][3]=130, sale[1][3]=312
− 원소의 위치 계산 방법 :
행의 개수가 ni 이고 열의 개수가 nj 인 2차원 배열 A[ni ][nj ]의 시작주소가 α이고
원소의 길이가 ℓ 일 때, i행 j열 원소 즉, A[i][ j]의 위치는?
α + (j ⅹ ni+ i)ⅹ ℓ
0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 |
A[2][2]의 위치
0 + (2 * 3 + 3) *1 =? 9나오는데... 아 머라는거여
예) α : 0, i : 1, j : 2, ni : 2, nj : 4, ℓ : 4, A[i][j] 의 위치는 ?
0 + ( 1 * 4 + 2 ) * 4
4 바이트라서 4
3차원 배열의 물리적 저장 방법
• 3차원의 논리적 순서를 1차원의 물리적 순서로 변환하는 방법 사용
• 면 우선 순서 방법
− 3차원 배열의 첫 번째 인덱스인 면 번호를 기준으로 사용하는 방법
− 원소의 위치 계산 방법 : 면의 개수가 ni 이고 행의 개수가 nj 이고, 열의 개수가 nk 인 3차원 배열 A[ni ][nj ][nk],
시작주소가 α이고 원소의 길이가 ℓ 일 때, i면 j행 k열 원소 즉, A[i][ j][k]의 위치는?
a + ((i * nj * nk) + ( j * nk) +k) *l
• 열 우선 순서 방법
− 3차원 배열의 마지막 인덱스인 열 번호를 기준으로 사용하는 방법
− 원소의 위치 계산 방법 : α + {(k ⅹ nj ⅹ ni ) + (j ⅹ ni ) + i}ⅹℓ
다항식의 선형 리스트 표현
다항식의 개념
• aXe 형식의 항들의 합으로 구성된 식
− a : 계수(coefficient)
− X : 변수(variable)
− e : 지수(exponent)
다항식의 특징
• 지수에 따라 내림차순으로 항을 나열
• 다항식의 차수 : 가장 큰 지수
• 다항식 항의 최대 개수 = (차수 + 1)개
지수가 높은 것의 계수를 순차적으로 먼저 쓰면 됨.
행렬의 선형 리스트 표현
행렬matrix의 개념
• 행과 열로 구성된 자료구조
• m×n 행렬 : 행 개수가 m개, 열 개수가 n개인 행렬
• 정방행렬 : 행렬 중에서 m과 n이 같은 행렬
• 전치행렬 : 행렬의 행과 열을 서로 바꿔 구성한 행렬
올~롸잇!
'✍2021,2022 > 자료구조' 카테고리의 다른 글
스택 (0) | 2022.02.16 |
---|---|
자료구조(5) - 연결 자료구조와 연결리스트 (0) | 2022.02.09 |
자료구조기초 (3) (0) | 2022.02.04 |
자료구조 기초 (2) (0) | 2022.02.02 |
자료구조 기초 (1) (0) | 2022.01.28 |