문자열을 뒤집는 프로그램의 알고리즘은 많다.
그 중 대표적인 것을 살펴보자~~
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);
}
그 중 대표적인 것을 살펴보자~~
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 |