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 );
}
}