1차원 배열을 이용한 선형 리스트의 구현
1. 구현
- 1차원 배열을 이용한 구현
int sale[4] = {157, 209, 251, 312};
* 특징: 동종의 데이터, 연속적 할당
* 물리적 구조
a = 배열이 시작되는 주소
ex) a = 2000이라면 sale[3]의 주소(&sale[3])는 200 + 3x4 = 2012이다.
2차원 배열을 이용한 선형 리스트의 구현
1. 구현
- 2차원 배열을 이용한 구현
int sale[2] [4] = {{63, 84, 140, 130}, {157, 209, 251, 312}};
* 논리적 구조
- 2차원 배열의 물리적 저장 방법
* 2차원의 논리적 순서를 1차원의 물맂적 순서로 변환하는 방법을 사용
- 행 우선 순서 방법(Row Major Order)
> 2차원 배열의 첫 번째 인덱스인 행 번호를 기준으로 사용하는 방법
- 열 우선 순서 방법(Columm Major Order)
> 2차원 배열의 마지막 인덱스인 열 번호를 기준으로 사용하는 방법
#include <stdio.h>
void main()
{
int i, n = 0, *prt;
int sale[2][4] = {{63, 84, 140, 130},
{157, 209, 251, 312}}; // 2차원 배열 초기화
ptr = &sale[0][0]; //ptr = sale로 대입 가능
for (i=0; i<8; i++)
{
printf("\n address: %u sale %d = %d", ptr, i, *ptr);
ptr++;
}
getchar();
}
3차원 배열을 이용한 선형 리스트의 구현
1. 구현
- 3차원 배열을 이용한 구현
int sale[2][2][4] = {{{63, 84, 140, 130}, {157, 209, 251, 312}}, {{59, 80, 130, 135}, {149, 187, 239, 310}}};
* 논리적 구조
- 3차원 배열의 물리적 저장 방법
* 3차원의 논리적 순서를 1차원의 물리적 순서로 변환하는 방법을 사용
- 면 우선 순서 방법(Plane Major Order)
> 3차원 배열의 첫 번째 인덱스인 면 번호를 기준으로 사용하는 방법
- 열 우선 순서 방법(Columm Major Order)
> 3차원 배열의 마지막 인덱스인 열 번호를 기준으로 사용하는 방법
#include <stdio.h>
void main()
{
int i, n = 0, *prt;
int sale[2][2][4] = {{{63, 84, 140, 130}, {157, 209, 251, 312}}, //면1
{{59, 80, 130, 135}, {149, 187, 239, 310}}}; //면2
ptr = &sale[0][0][0]; //ptr = sale로 대입 가능
for (i=0; i<16; i++)
{
printf("\n address: %u sale %2d = %3d", ptr, i, *ptr);
ptr++;
}
getchar();
}
'자료구조&알고리즘' 카테고리의 다른 글
연결 리스트 (0) | 2022.02.18 |
---|---|
리스트와 단순 연결 리스트 (0) | 2022.02.15 |
선형 리스트(Lenear List) 개요 (0) | 2022.02.14 |
알고리즘 분석 (0) | 2022.02.11 |
자료구조와 알고리즘 (0) | 2022.02.11 |