用c语言写栈判断回文序列
时间: 2024-10-20 09:15:14 浏览: 46
在C语言中,我们可以利用栈的数据结构特性来判断一个序列是否为回文。回文序列是指正读反读都一样的字符串,例如"abcba"和"madam"。
以下是一个简单的C程序,它会通过将输入序列的一半元素压入栈中,然后遍历另一半并与栈顶元素一一比较,如果相等则继续,直到遍历完或者栈为空:
```c
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
bool isPalindrome(char str[]) {
int n = strlen(str);
// 将一半字符压入栈中
stack<char> s;
for (int i = 0; i <= n / 2; i++) {
s.push(str[i]);
}
// 另一半从头开始对比
for (int i = n / 2 + 1; i < n; i++) {
if (s.empty() || str[i] != s.top()) {
return false; // 如果不匹配或栈空,则不是回文
}
s.pop();
}
// 如果所有元素都比对过了,并且栈也为空,说明是回文
return s.empty();
}
int main() {
char input[100];
printf("Enter a sequence to check if it's palindrome: ");
fgets(input, sizeof(input), stdin); // 注意处理换行符
bool result = isPalindrome(input);
if (result) {
printf("The sequence is a palindrome.\n");
} else {
printf("The sequence is not a palindrome.\n");
}
return 0;
}
```
阅读全文