새발블로그

[C언어로 쉽게 풀어쓴 자료구조] 3장 본문

Computer Science/Data Structure

[C언어로 쉽게 풀어쓴 자료구조] 3장

EUG 2023. 8. 25. 13:19

01 int a[10][20]에서 배열이 차지하는 메모리 공간의 크기는 얼마인가? int형은 4ㅍ바이트라고 하자.

(1)200바이트

(2)400바이트

(3)600바이트

(4)800바이트

 

02 float a[100]으로 선언된 배열의 시작 주소를 1000번지라고 할 때, 배열의 10번째 요소의 주소는 몇 번지인가?

(1)1100번지

(2)1200번지

(3)1300번지

(4)1400번지

 

03 다음 배열 중에서 크기가 가장 큰 배열은?

(1) int array1[10];

(2) double array2[10];

(3) char aaray3[40];

(4) float array4[10];

 

04 크기가 10인 배열 two[]를 선언하고 여기에 2의 제곱 값들을 저장해보자. 즉 배열의 첫 번째 요소에는 20을 저장하고 두 번째 요소에는 21값을 저장한다. 마지막 요소에는 29값을 저장한다. for루프를 이용하여 two[]배열의 전체 요소의 값을 출력하는 프로그램을 작성하라

 

05 person 이라는 구조체를 만들어보자. 이 구조체에는 문자 배열로 된 이름, 사람의 나이를 나타내는 정수 값, 각 개인의 월급을 나타내는 float 값 등이 변수로 들어가야한다.

 

06 C언어의 typedef을 이용하여 complex라고 하는 새로운 자료형을 정의하라. complex자료형은 구조체로서 float형인 real변수와 float형인 imaginary변수를 갖는다. complex 자료형으로 변수 c1과 c2를 선언하여보라.

 

07 복소수를 구조체로 표현해보자. 복소수 a와 복소수 b를 받아서 a+b를 계산하는 함수를 작성해보자. 함수는 구조체를 반환할 수 있다. 알다시피 복소수는 real+imag*i와 같은 형태를 갖는다.

Complex complex_add(Complex a, complx b){

...

}

08 크기가 n인 배열 array에서 임의의 위치 loc에 정수 value를 삽입하는 함수 insert()를 작성하라. 정수가 삽입되면 그 뒤에 있는 정수들은 한 칸씩 뒤로 밀려야 한다. 현재 배열에 들어있는 원소의 개수는 items개라고 하자. (여기서 items<<n라고 가정)

void insert(int array[], int loc, int value){
...
}

09 앞에서 구현한 insert() 함수의 시간 복잡도는?

 

10 크기가 n인 배열 array에서 임의의 위치 loc에 있는 정수를 삭제하는 함수 delete()를 작성하라. 정수가 삭제되면 그 뒤에 있는 정수들은 한 칸씩 앞으로 이동하여야 한다. 현재 배열에 들어있는 원소의 개수는 items라 하자. (여기서 items<<n라고 가정)

int delete (int array[], int loc){
...
}

11 앞에서 구현한 delete()함수의 시간 복잡도는?

 

12 1개의 정수와 최대 크기가 20인 문자열로 이루어진 구조체를 저장할 수 있도록 동적 메모리를 할당받고 여기에 정수 100과 문자열 "just testing"을 저장한 다음, 동적 메모리를 반납하는 프로그램을 작성하라.