用c语言实现栈的回文判断
时间: 2023-10-11 19:10:58 浏览: 96
C数据结构基于栈的回文判断
4星 · 用户满意度95%
以下是使用C语言实现栈的回文判断的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
void push(Stack *s, char c) {
if (s->top == MAX_SIZE - 1) {
printf("Stack Overflow\n");
exit(1);
}
s->data[++s->top] = c;
}
char pop(Stack *s) {
if (s->top == -1) {
printf("Stack Underflow\n");
exit(1);
}
return s->data[s->top--];
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
int is_palindrome(char *str) {
Stack s;
init(&s);
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
push(&s, str[i]);
}
for (int i = (len + 1) / 2; i < len; i++) {
if (pop(&s) != str[i]) {
return 0;
}
}
return 1;
}
int main() {
char str[MAX_SIZE];
printf("Enter a string: ");
fgets(str, MAX_SIZE, stdin);
str[strcspn(str, "\n")] = '\0';
if (is_palindrome(str)) {
printf("%s is a palindrome\n", str);
} else {
printf("%s is not a palindrome\n", str);
}
return 0;
}
```
该程序首先定义了一个结构体 `Stack` 表示栈,其中包含一个字符数组 `data` 作为栈的存储空间和一个整数 `top` 表示栈顶的索引。然后定义了一些栈的操作函数,如 `init` 用于初始化栈、`push` 用于入栈、`pop` 用于出栈、`is_empty` 用于判断栈是否为空、`is_full` 用于判断栈是否已满。最后定义了一个 `is_palindrome` 函数,该函数接受一个字符串作为参数,使用栈来判断该字符串是否为回文字符串。在 `main` 函数中,先读入用户输入的字符串,然后调用 `is_palindrome` 函数进行判断并输出结果。
阅读全文