下面是一个使用栈来识别回文结构的C语言示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 100
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
void init(Stack *stack) {
stack->top = -1;
}
void push(Stack *stack, char value) {
if (stack->top < MAX_SIZE - 1) {
stack->data[++stack->top] = value;
}
}
char pop(Stack *stack) {
if (stack->top >= 0) {
return stack->data[stack->top--];
}
return '\0';
}
bool isPalindrome(char *str) {
Stack stack;
init(&stack);
int length = strlen(str) / 2;
for (int i = 0; i < length; i++) {
push(&stack, str[i]);
}
int start = length;
if (strlen(str) % 2 == 1) {
start++;
}
for (int i = start; i < strlen(str); i++) {
if (str[i] != pop(&stack)) {
return false;
}
}
return true;
}
int main() {
char str[MAX_SIZE];
printf("Enter a string: ");
scanf("%s", str);
if (isPalindrome(str)) {
printf("The string is a palindrome.\n");
} else {
printf("The string is not a palindrome.\n");
}
return 0;
}
在这个示例中,我们定义了一个栈结构体和相关的操作函数。然后我们定义了一个isPalindrome
函数来判断输入的字符串是否是回文结构。最后在main
函数中输入一个字符串,并调用isPalindrome
函数来判断该字符串是否是回文结构。