Page 66 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 66
실습 2-7은 이를 구현한 프로그램입니다.
실습 2-7 •완성 파일 chap02/rev_ary.c
01 /* 배열 요소를 역순으로 정렬합니다. */
02 #include <stdio.h>
03 #include <stdlib.h>
04
05 /*--- type형 x와 y 값을 교환 ---*/
06 #define swap(type, x, y) do{ type t = x; x = y; y = t;} while(0)
07
08 /*--- 요소 개수가 n인 배열 a의 요소를 역순으로 정렬 ---*/
실행 결과
09 void ary_reverse(int a[], int n)
요소 개수 : 5
10 {
5개의 정수를 입력하세요.
11 int i; x[0] : 10
12 for(i = 0; i < n / 2; i++) x[1] : 73
13 swap(int, a[i], a[n - i - 1]); x[2] : 2
14 } x[3] : -5
x[4] : 42
15
배열의 요소를 역순으로 정렬
16 int main(void)
했습니다.
17 { x[0] = 42
18 int i; x[1] = -5
19 int *x; /* 배열 첫 번째 요소의 포인터 */ x[2] = 2
20 int nx; /* 배열 x의 요소 개수 */ x[3] = 73
x[4] = 10
21
22 printf("요소 개수 : ");
23 scanf("%d", &nx);
24 x = calloc(nx, sizeof(int)); /* 요소 개수가 nx인 int형 배열 x를 생성 */
25 printf("%d개의 정수를 입력하세요.\n", nx);
26 for(i = 0; i < nx; i++) {
27 printf("x[%d] : ", i);
28 scanf("%d", &x[i]);
29 }
30 ary_reverse(x, nx); /* 배열 x의 요소를 역순으로 정렬 */
31 printf("배열의 요소를 역순으로 정렬했습니다.\n");
32 for(i = 0; i < nx; i++)
33 printf("x[%d] = %d\n", i, x[i]);
34 free(x); /* 배열 x를 해제 */
35
36 return 0;
37 }
66 C 알고리즘