数据结构C语言回文判断
时间: 2024-04-29 20:16:25 浏览: 128
数据结构之回文判断
4星 · 用户满意度95%
在C语言中,回文判断是一个常见的问题。回文是指正序和逆序读都相同的字符串或序列。下面是一种基于数据结构的回文判断方法:
1. 使用栈:将字符串中的字符依次入栈,然后再依次出栈与原字符串进行比较。如果出栈的字符与原字符串中的字符相同,则继续比较下一个字符;如果不相同,则说明不是回文。如果所有字符都比较完且相同,则是回文。
C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
// 栈结构定义
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 入栈
void push(Stack *s, char c) {
s->data[++(s->top)] = c;
}
// 出栈
char pop(Stack *s) {
return s->data[(s->top)--];
}
// 判断是否为回文
int isPalindrome(char *str) {
int len = strlen(str);
Stack s;
initStack(&s);
// 将字符串前一半字符入栈
for (int i = 0; i < len / 2; i++) {
push(&s, str[i]);
}
// 比较栈中的字符与字符串后一半字符
int i = (len + 1) / 2;
while (i < len) {
if (pop(&s) != str[i]) {
return 0; // 不是回文
i++;
}
return 1; // 是回文
}
int main() {
char str[MAX_SIZE];
printf("请输入一个:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文\n", str);
} else {
printf("%s 不是回文\n", str);
}
return 0;
}
```
--相关--:
1. 什么是回文?
2. 如何使用栈判断回文?
3. 还有其他的回文判断方法吗?
阅读全文