본문 바로가기

프로그래밍/컴퓨터공학

두근두근 자료구조 2장 (배열과 구조체) 연습문제

728x90
반응형

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

4. 800바이트

 

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

4. 1040번지

 

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

2. double array2[10];

 

크기가 10인 배열 two[]를 선언하고 여기에 2의 제곱 값들을 저장해보자. for 루프를 이용하여 two[] 배열의 전체 요소의 값을 출력하는 프로그램을 작성하라.

#include <stdio.h>
int main()
{
	int two[10];
	for (int i = 0; i < 10; i++) {
		int tmp = 0;
		
		for (int u = 0; u <= i; u++) {
			if (u == 0) {
				tmp += 1;
			}
			else {
				tmp *= 2;
			}

		}

		two[i] = tmp;

		printf("%d ", two[i]);
	}
	return 0;
}

 

본문에서 구조체로 복소수를 나타낸바 있다. 여기서는 복소수 a와 복소수 b를 받아서 a+b를 계산하는 함수를 작성해보자. 함수는 구조체를 반환할 수 있다. 알다시피 복소수는 real + imag*i와 같은 형태를 갖는다.

#include <stdio.h>

typedef struct {
	int real;
	int imag;
}Complex;

Complex add_comple(Complex a, Complex b);

int main()
{
	Complex a = { 1, 3 };
	Complex b = { 2, 4 };

	Complex c = add_comple(a, b);

	printf("%d + %di", c.real, c.imag);
	
	return 0;
}

Complex add_comple(Complex a, Complex b) {
	Complex tmp;
	tmp.real = a.real + b.real;
	tmp.imag = a.imag + b.imag;
	return tmp;
}

 

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

void insert(int array[], int loc, int value) {
	for (int i = items; i >= loc; i--) {
		array[i + 1] = array[i];
	}
	array[loc] = value;
}

 

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

o(n)

 

 

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

void delete(int array[], int loc) {
	for (int i = loc; i < items; i++) {
		array[i] = array[i+1];
	}
}

 

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

o(n)

 

 

728x90
반응형