栈是一种后进先出的数据结构,它只能在一端进行插入和删除操作,通常把它叫做top,类似于我们吃薯片的过程,你是不是先从最顶端开始吃的呢?判断回文就是栈的一个典型用法。
所谓回文,就是左右对称的结构,那么我们只需要将其一半输入栈中,再输出判断是否与字符另一半相等,就可以判断是否是回文字符了,是不是十分简单呢。
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int next,len,mid;
char a[100],s[100];
gets(a); //输入字符
len=strlen(a);
mid=len/2-1; //获取中间位置
int top=0; //初始化栈
for(int i=0;i<=mid;i++){ //入栈
s[++top]=a[i];
}
if(len%2==0)//判断字符数位的奇偶
next=mid+1;
else
next=mid+2;
for(int i=next;i<len;i++){
if(a[i]!=s[top])
break;
top--;
}
if(top==0)//匹配完成
cout<<"It's a palindrome."<<endl;
else
cout<<"It's not a palindrome."<<endl;
}