데이터 노가다 일지
2장 연습문제 본문
2.1 다음의 빈칸을 채워라
- 배열은 ( 인덱스, 요소) 쌍의 집합이다.
- 배열은 선언이 간단하고, ( for ) 문을 사용할 . 수있어 코드가 훨씬 간결해진다.
- 배열의 모든 요소는 메모리의 ( 연속된 ) 위치에 저장된다.
- 문자열은 문자의 배열을 의미하는데, 끝을 나타내는 ( NULL )이 마지막에 추가된다.
- 배열의 이름은 ( 배열 첫 요소) 의 주소이다.
- 배열을 함수로 전달하려면 반드시 ( 크기 ) 도 함께 알려주어야 한다.
- 구조체 변수에서 각 필드에 접근하려면 ( 연산자 ) 를 사용한다.
- 일반 변수와 같이 구조체도 ( 대입 ) 연산이 기본적으로 지원된다.
- 요소 대부분이 0인 행렬을 ( 희소 행렬 ) 이라고 한다.
2.2 다음 설명이 옳으면 O, 틀리면 X를 표시하라.
- 이차원 배열은 선언과 동시에 초기화할 수 없다. (X)
- 구조체도 배열과 같이 선언과 동시에 초기화할 수있다. (O)
- 구조체에서는 비교 연산자나 산술 연산자 등도 기본적으로 지원한다. (X)
2.3 int a[10][20]; 에서 배열이 차지하는 메모리 공간의 크기는 얼마인가? int형은 4바이트라고 가정한다.
800 바이트
2.7 정수 배열 A에 items개의 정수가 순서대로 저장되어 있다. 배열의 임의의 위치 loc에 정수 value를 삽입하는 함수 insert()를 작성하라. 정수가 삽입되면 이후의 요소들은 모두 한칸 씩 뒤로 밀리게 된다. 단, 배열 A의 전체 용량은 items 보다 충분히 크다고 가정한다.
void insert(int A[], int items, int loc, int value) {
// 뒤에서부터 한 칸씩 요소를 이동시킴
for (int i = items; i > loc; i--) {
A[i] = A[i - 1];
}
// loc 위치에 value 삽입
A[loc] = value;
}
2.8 앞의 문제에서 구현한 insert() 함수의 시간 복잡도는?
O(n)
2.9 정수 배열 A에 items개의 정수가 순서대로 저장되어 있다. 배열의 임의의 위치 loc의 요소를 삭제하는 함수 delete()를 작성하라. 하나의 요소가 삭제되면 이후의 요소들은 모두 한칸씩 앞으로 이동하여야 한다.
void delete(int A[], int items, int loc) {
// loc 이후의 요소들을 한 칸씩 앞으로 이동
for (int i = loc; i < items - 1; i++) {
A[i] = A[i + 1];
}
}
앞의 문제에서 구현한 delete() 함수의 시간 복잡도는?
O(n)
'data_structure' 카테고리의 다른 글
3. 스택 (0) | 2024.10.07 |
---|---|
2. 배열과 구조체 (0) | 2024.10.07 |