자료구조&알고리즘

선형 리스트의 구현

CalebHong 2022. 2. 14. 12:57

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