Page 160 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 160

연습       Q4  int형 큐를 사용하는 프로그램에 임의의 데이터를 검색하는 아래의 함수를 추가하세요.
                    문제
                             int Search2(const IntQueue& q, int x);


                            이때 새로 만든 Search2 함수는 앞에서 만든 Search 함수처럼 찾은 요소의 인덱스를 반환하지
                            않습니다. Search2 함수는 찾은 데이터가 맨 앞의 요소로부터 상대적으로 몇 번째 위치에 있는
                            지에 대한 인덱스 값을 반환합니다. 검색에 실패할 경우에는 –1을 반환합니다.
                                예를 들어 그림 4-16에서 35를 검색하면 0을, 56을 검색하면 1을, 73을 검색하면 5를 반환합니다. 큐에 존
                            재하지 않는 값인 99를 검색하면 –1을 반환합니다.


                             Q5  실습 4-6에서 사용하는 함수는 IntQueue.c에서 제공하는 함수를 모두 사용하지 않았습
                            니다. 바로 앞 문제에서 만든 Search2 함수를 포함하여 모든 함수를 사용하는 프로그램을 만드
                            세요.

                             Q6  일반적으로 덱(deck)이라는 양방향 대기열(deque/double ended queue)은 아래 그림
                            처럼 시작과 끝 지점에서 양쪽으로 데이터를 인큐하거나 디큐하는 자료구조입니다. 양방향 대기
                            열을 구현하는 프로그램을 만드세요. 이때 덱(deck)에 저장하는 데이터의 자료형은 int형으로 합
                            니다.

                                  인큐                             인큐



                                    맨 앞                       맨 끝
                                디큐                                 디큐






                       보충수업 4-1   링 버퍼의 활용
                   링 버퍼는 ‘오래된 데이터를 버리는’ 용도로 사용할 수 있습니다. 구체적인 예를 들면 요소의 개수가 n

                   인 배열에 계속해서 데이터가 입력될 때 가장 최근에 들어온 데이터 n개만 저장하고 오래된 데이터는
                   버리는 용도로 사용합니다. 이런 방법으로 링 버퍼를 활용한 프로그램이 실습 4C-1입니다. 배열 a의
                   요소 개수는 10개입니다. 정수 입력(인큐)은 무한히 할 수 있지만 배열에 저장되는 데이터는 가장 최근
                   에 입력한 10개의 데이터만 링 버퍼에 남아 있습니다.















                   160   C 알고리즘
   155   156   157   158   159   160   161   162   163   164   165