回文字符串c语言用栈
时间: 2024-09-30 15:00:33 浏览: 22
回文字符串是指正读反读都一样的字符串,例如 "level"、"racecar" 等。在 C 语言中,我们可以利用栈数据结构来检查一个字符串是否为回文。这里是一个简单的步骤:
1. 创建一个栈(可以使用数组或者链表实现),用于存放字符串的字符。
2. 遍历输入字符串的一半,将每个字符依次入栈。
3. 另一半遍历过程中,从栈顶取出字符并与当前遍历到的字符比较,如果相同则继续,如果不相同,则字符串不是回文。
4. 遍历结束后,如果所有字符都能一一对应相等,说明原始字符串是回文。
下面是简化的 C 代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
void push(char stack[], int top, char ch) {
if (top == MAX_SIZE - 1)
return;
stack[top++] = ch;
}
int isPalindrome(char str[]) {
int len = strlen(str);
int top = -1;
for (int i = 0; i < len / 2; i++) {
push(stack, top, str[i]);
if (str[i] != str[len - 1 - i]) {
return 0; // 不是回文
}
}
// 如果到了这里,说明前半部分的所有字符都匹配了,再检查剩下的字符是否相同
while (top >= 0 && str[top] == str[len - 1 - top])
top--;
return top == -1 ? 1 : 0; // 如果栈空则为回文,否则不是
}
int main() {
char str[MAX_SIZE];
printf("请输入一个字符串: ");
scanf("%s", str);
if (isPalindrome(str))
printf("%s 是回文\n", str);
else
printf("%s 不是回文\n", str);
return 0;
}
```
阅读全文