用栈判断字符串回文C
时间: 2024-10-28 10:12:20 浏览: 5
在C语言中,可以使用栈的数据结构来判断一个字符串是否是回文。回文是指正读反读都一样的单词、短语或序列。以下是使用栈的基本步骤:
1. **创建两个指针**:初始化两个指向字符串开始和结束位置的指针,一个名为`start`,另一个名为`end`。
2. **将字符压入栈中**:从字符串的起始位置`start`开始,依次将字符压入栈中。
3. **比较栈顶元素**:每次从`end`指针处取出字符并与栈顶元素比较。如果它们相等,则继续;如果不等,说明不是回文,返回`false`。
4. **移动指针**:每次比较完,`end`指针向左移动一位,直到`start`和`end`相遇,或者找到不相等的字符为止。
5. **检查空栈**:当`start`和`end`相遇时,如果没有提前返回,说明整个字符串都是回文,返回`true`。
下面是简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <stack>
bool isPalindrome(char str[]) {
stack<char> s;
int start = 0, end = strlen(str) - 1;
// 将字符压入栈中
while (start < end) {
s.push(str[start]);
start++;
}
// 比较栈顶元素与后半部分
while (!s.empty() && start < end) {
if (s.top() != str[end]) {
return false; // 不是回文
}
s.pop();
end--;
}
return true; // 是回文
}
int main() {
char test[] = "madam";
printf("%s is a palindrome? %d\n", test, isPalindrome(test));
return 0;
}
```
阅读全文