c语言顺序栈回文判断
时间: 2023-12-02 16:38:02 浏览: 158
顺序栈是一种基于数组实现的栈结构,可以使用顺序栈来判断一个字符串是否为回文字符串。具体实现步骤如下:
1. 定义一个顺序栈结构体,包含一个数组和一个栈顶指针。
2. 将字符串依次入栈。
3. 依次出栈并与原字符串比较,如果全部相等,则为回文字符串。
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
typedef struct {
char data[MAXSIZE];
int top;
} SqStack;
void InitStack(SqStack *S) {
S->top = -1;
}
void Push(SqStack *S, char x) {
if (S->top == MAXSIZE - 1) {
printf("Stack is full.\n");
return;
}
S->top++;
S->data[S->top] = x;
}
char Pop(SqStack *S) {
if (S->top == -1) {
printf("Stack is empty.\n");
return '\0';
}
char x = S->data[S->top];
S->top--;
return x;
}
int Palindrome(char *str) {
SqStack S;
InitStack(&S);
int len = strlen(str);
for (int i = 0; i < len; i++) {
Push(&S, str[i]);
}
for (int i = 0; i < len; i++) {
if (Pop(&S) != str[i]) {
return 0;
}
}
return 1;
}
int main() {
char str[MAXSIZE];
printf("Please input a string: ");
scanf("%s", str);
if (Palindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
```
阅读全文