解密回文——栈

“xyzyx”是一个回文字符串,所谓回文字符 串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“aha”和“ahaha”均是回 文,但“ahah”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。

#include <stdio.h>
#include <string.h>
int main()
{
    char a[101],s[101];
    int i,len,mid,next,top;

	gets(a); //读入一行字符串 
	len=strlen(a); //求字符串的长度 
	mid=len/2-1; //求字符串的中点
	printf("%d
",mid);

	top=0;//栈的初始化 
	//将mid前的字符依次入栈 
	for(i=0;i<=mid;i++)
	        s[++top]=a[i];

	//判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标 
	 if(len%2==0)
	    next=mid+1;
	 else
		next=mid+2;

	//开始匹配 
	for(i=next;i<=len-1;i++)
	{
        if(a[i]!=s[top])
            break;
        top--;
	}
	//如果top的值为0,则说明栈内所有的字符都被一一匹配了 
	if(top==0)
	        printf("YES");
	    else
	        printf("NO");

	getchar();getchar();
	return 0; 
}
原文地址:https://www.cnblogs.com/fazero/p/4966803.html