回文判断C语言栈或队列的代码
时间: 2024-10-19 15:12:54 浏览: 41
数据结构C语言回文判断运用栈以及队列.doc
回文判断通常是指检查一个字符串是否正读反读都一样,即从前往后读和从后往前读结果相同。在C语言中,你可以通过栈或队列来辅助实现这个功能。这里是一个简单的例子,使用栈:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stack>
bool isPalindrome(char str[]) {
stack<char> s;
// 将字符串中的字符入栈
for (int i = 0; str[i] != '\0'; i++) {
s.push(str[i]);
}
// 检查栈顶元素是否等于原字符串的倒数第一个元素
bool flag = true;
for (int i = 0; i < strlen(str) / 2; i++) {
if (s.top() != str[strlen(str) - 1 - i]) {
flag = false;
break;
}
s.pop();
}
return flag;
}
// 测试函数
int main() {
char test[] = "madam";
if (isPalindrome(test)) {
printf("'%s' is a palindrome.\n", test);
} else {
printf("'%s' is not a palindrome.\n", test);
}
return 0;
}
```
这里我们利用了栈的特性,将一半的字符压入栈中,然后逐一取出并与另一半比较。如果在任何时候发现不匹配,则返回`false`,表示不是回文。
如果你想使用队列,可以考虑将字符串的一半存储到数组或链表中,然后遍历另一半并与之对比,但由于队列的操作相对复杂一些,这里就不展示队列版本的代码了。
阅读全文