运用栈,队列,线性表编写一c语言算法实现回文判断
时间: 2024-10-17 16:10:48 浏览: 32
在C语言中,我们可以使用栈(Stack)和队列(Queue)的数据结构来辅助判断一个字符串是否是回文。这里提供一种基本的方法,首先将字符串的一半字符依次入栈,然后逐个取出栈顶元素并与剩余未比较的部分字符对比。如果都相等,则该串是回文。
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 判断是否为回文
bool isPalindrome(char str[]) {
int len = strlen(str);
// 创建两个指针,一个指向开始,一个指向结束
int start = 0;
int end = len - 1;
// 使用栈辅助判断
stack<char> s;
while (start < end) {
// 入栈
s.push(str[end]);
// 出栈并与当前字符对比
if (s.top() != str[start]) {
return false; // 如果不相等则不是回文
}
start++;
end--;
}
// 验证栈是否为空,如果为空说明字符串是回文
while (!s.empty()) {
if (s.top() != str[start++]) {
return false;
}
s.pop();
}
return true;
}
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;
}
阅读全文