用栈处理回文

用栈来验证回文字符串(参考书籍,用于日后复习)

/*
栈是一种后进先出的数据结构
栈限定为只能在一端进行插入和删除操作
栈的实现需要一个一维数组和一个指向栈顶的变量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"; 
}

 

posted on 2020-05-06 20:37  YovM_21  阅读(337)  评论(0编辑  收藏  举报

导航