Advertisement

C语言数据结构判断字符串是否是回文

阅读量:

判断字符串是否是回文通过把一半的字符串输入栈,再通过出栈一一与另一半对比,如果相等就继续,直到最后发现都能一一对应,则说明是回文

include <stdio.h>
#include <string.h>

#define MAX_SIZE 100

typedef struct {
char items[MAX_SIZE];
int top;
} Stack;

void initStack(Stack *s) {
s->top = -1;
}

void push(Stack *s, char c) {
s->items[++(s->top)] = c;
}

char pop(Stack *s) {
return s->items[(s->top)--];
}

int main() {
Stack s;
char str[MAX_SIZE];
int i, len, mid;
int isPalindrome = 1;

initStack(&s);

printf("Enter a string: ");
scanf("%s", str);

len = strlen(str);
mid = (len -1) / 2;//因为索引从0开始

for (i = 0; i <= mid; i++)
{
push(&s, str[i]);
}

for (i = (len % 2 == 0) ? mid+1 : mid;i < len;i++)//如果是奇数,就是mid
{
if (str[i] != pop(&s)) {
isPalindrome = 0; // Not a palindrome
break;
}
}

if (isPalindrome) {
printf("The string is a palindrome.\n");
} else {
printf("The string is not a palindrome.\n");
}
return 0;
}

全部评论 (0)

还没有任何评论哟~