用栈来验证回文字符串(参考书籍,用于日后复习)
/* 栈是一种后进先出的数据结构 栈限定为只能在一端进行插入和删除操作 栈的实现需要一个一维数组和一个指向栈顶的变量top 我们通过top来对栈进行插入和删除操作 */ #include<iostream> #include<cstring> using namespace std; int main() { char a[101],s[101]; int i,len,mid,next,top; gets(a);//读入一行字符串 len=strlen(a);//求字符串的长度 mid=len/2-1; 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) cout<<"YES"; else cout<<"NO"; }