使用C语言,写一个算法判定给定的字符串是否是回文。(提示:可以将一半字符入栈)
时间: 2024-09-29 13:04:09 浏览: 13
在C语言中,判断一个字符串是否是回文可以通过比较字符串正向和反向的部分来实现。这里提供一种常见的方法,即使用栈的数据结构存储字符串的一半字符,然后逐个检查剩余字符与栈顶字符是否相等。
以下是一个简单的C语言函数,用于判断字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isPalindrome(char str[]) {
int n = strlen(str);
// 创建一个字符数组用于栈操作
char stack[n / 2];
int top = -1; // 栈顶指针
// 将字符串前半部分压入栈中
for (int i = 0; i < n / 2; ++i) {
stack[++top] = str[i];
}
// 检查后半部分是否等于栈顶元素对应的倒序字符
for (int i = n / 2; i < n; ++i) {
if (str[i] != stack[top--]) {
return false;
}
}
return true;
}
// 测试示例
int main() {
char str[] = "madam";
if (isPalindrome(str)) {
printf("%s 是回文字符串。\n", str);
} else {
printf("%s 不是回文字符串。\n", str);
}
return 0;
}
```