'recursive'에 해당되는 글 1건

문자열을 뒤집는 프로그램의 알고리즘은 많다.
그 중 대표적인 것을 살펴보자~~

1. 메모리를 사용한 변환
   int rev()
   {
       char string[20] = "this is test";
       char reverse[20];
       int i, j = 0;

       for( i = strlen(string); i >= 0; i--)
          reverse[j++] = string[i];

      reverse[j] = '\0'; // 이 부분을 잘 빠뜨리는데 주의할 것!!

   }

2. 별도의 메모리를 사용하지 않고 변환
   int rev()
   {
       char s[20] = "this is test";
       char temp;
       int len = strlen(s);
       int i;

       for( i = 0; i < len/2 ; i++) {
          temp = s[i];
          s[i] = s[len - 1 - i];
          s[len - 1 - i] = temp;
       }

   }

   문자가 2byte를 기본으로 하는 한국어일 경우는 힘들겠죠??

3. 재귀함수 이용
   char *s = "this is test";

   void rec(void)
  {
      if( *p == NULL) // 종결조건
         return;

      p++; // 전진방법
      rec();
      p--; // 수행방법
      putchar(*p);

      return;
   }

   * recursive(재귀함수) 코딩하는 방법에서 꼭 갖추어야 할 요건
     1. 전진방법
     2. 종결조건
     3. 수행방법

4. 스택 이용
    void rev(char string[])
    {
       int i;
       int top = 0;

       for( i = 0; s[i] != '\0'; i++)
          PUSH(&top, s[i]);

       for( i = 0; s[i] != '\0'; i++)
          s[i] = POP(&top);

    }

'IT > 알고리즘' 카테고리의 다른 글

mmap (메모리맵)  (0) 2008.07.08
피보나치 수열  (2) 2008.07.08
call by value vs. call by reference  (0) 2008.07.08
C 프로그램에서 데이터형  (0) 2008.07.08
프로세스의 메모리 구조  (4) 2008.07.08
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,