2.자료의 표현(배열,구조체)

2018. 1. 5. 13:01자료구조


자료구조 - 선형구조, 비선형구조


선형구조 : 순차리스트(배열, 행렬, 레코드), 연결리스트(단순/이중/원형 연결리스트)

- 전후 관계가 명확, 항목간 관계가 1:1


비선형구조 : 트리(일반/이진 트리), 그래프(방향/무방향 그래프)

- 전후 관계가 불명확, 항목관 관계가 1:N




군집 자료 형의 종류 - 배열, 구조체


배열 : 같은 자료형의 데이터들의 모임.


- 배열의 대표정보 : 배열 첫 데이터의 주소(=배열 이름)


*함수에서 배열을 매개변수로 전달 = 배열의 첫 데이터의 주소가 전달됨.


다차원 배열에서의 원소 저장 순서 

-행 우선(C언어), 열 우선(Fortan 언어) 


-2차원배열의주소-

int a[d1] [d2]


행우선방식(C 언어)의경우

-> a[i][j] = b + {i* d2 + j}* s  

b : 첫원소의주소, 

s : 데이터1개가 차지하는 메모리소자 수


예) C의경우,int b[4][3] 에서b[0][0] = 80번지에저장되어있을때, b[3][1] 의주소는? (단, 정수데이터는메모리소자2개차지가정) 

-> 80 +{(3 -0) * 3 + (1 –0)} * 2 = 100


•열우선방식(Fortran)의경우 (시작 인덱스가 a[1] [1])

-> a[i][j] = b + {j * d1 + i}* s 

b : 첫원소의주소

s : 데이터1개가차지하는메모리소자수


예) Fortran의경우,intm[4][3] 에서m[1][1] = 80번지에저장되어있을때, m[4][2] 의주소는? (단, 정수데이터는메모리소자2개차지가정)

-> 80 +{(2 -1) * 4 + (4 –1)} * 2 = 94


구조체 : 다른 자료형의 데이터들의 모임.


struct member {

int id;

char name[20];

float score;

};


ex) 

1) struct member 타입의 변수 st1과 struct member 타입의 10개 원소를 가진 배열 sts를 선언하시오!

->  structmember st1;

structmember sts[10];


2) st1의id 항목의값을출력하시오.

-> printf( ‚id=%d\n‛, st1.id );


3) st1의score 항목에4.0을대입하시오.

-> st1.score = 4.0;



구조체 사용법!

typedef struct{

intid;

char name[20];

char grade;

} MYTYPE;

MYTYPE student[50];


void main() {

inti;

for (i= 0;i < 50;i++) {

if ( student[i].grade == ‘A’ )

printf( ‚%d %s %c\n‛,

student[i].id, student[i].name, student[i].grade );

}

}


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

함수와 알고리즘  (0) 2019.03.27