用栈实现C语言回文判定
时间: 2024-09-14 11:04:43 浏览: 65
回文判断_C语言_
5星 · 资源好评率100%
在C语言中,我们可以利用栈来判断一个字符串是否为回文。回文是指正读反读都一样的单词或短语,如"level"和"madam"。这里是一个简单的思路:
首先,我们遍历输入的字符串的一半,并将每个字符依次压入栈中。然后,从栈顶开始逐个取出字符并与原字符串对应的字符比较,如果所有字符都能匹配,则该字符串就是回文。
以下是C语言的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char str[]) {
int stack_size = 0;
char temp;
// 将一半字符压入栈
for (int i = 0; i < strlen(str) / 2; ++i) {
temp = str[i];
if (str[stack_size] != '\0') {
stack_size++;
}
str[stack_size] = temp;
}
// 检查另一半字符是否等于对应栈顶字符
for (int i = 0; i < strlen(str) / 2; ++i) {
if (str[i] != str[stack_size - 1]) {
return false;
}
stack_size--;
}
return true;
}
int main() {
char str[] = "radar";
if (isPalindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
```
在这个代码里,`isPalindrome` 函数首先初始化一个空栈,然后将字符串前半部分的字符压入栈中。接着,它比较剩余的字符串字符和栈顶字符,如果发现不匹配就立即返回 `false`。如果所有的字符都能匹配,那么最终返回 `true` 表明是回文。
阅读全文