回文串判定

题目描述

输入一串字符(长度小于100),判断该串字符是否是回文串(正序读与逆序读内容相同)。

输入

输入一串字符(长度小于100)。

输出

若该串字符是回文串输出“yes",否则输出”no“。

示例输入

asdfgfdsa

示例输出

yes





#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
const int  maxsize = 10000;


typedef char elemtype;
typedef struct Stack
{
    int Size;
    elemtype *top,*base;
} Stack;


bool Empty(Stack &s)//判断是否为空栈;
{
    if (s.top == s.base)
    {
        return 1;
    }
    return 0;
}

void Creat(Stack &s)//栈的初始化;
{
    s.base=new elemtype[maxsize];
    s.top=s.base;
    s.Size=maxsize;
}

void push(Stack &s,elemtype e)
{
    if (s.top-s.base >= s.Size)
    {
        s.base=(elemtype *)realloc(s.base,2*maxsize*sizeof(Stack));
        s.Size+=maxsize;
        ///s.top=s.base+s.Size;
    }
    s.top++;
    *s.top=e;
}
void out(Stack &s)//栈内元素的输出;
{
    s.base++;
    while(s.base<=s.top)
    {
        cout<<*s.base;
        s.base++;
    }
    cout<<endl;
}

void Clear(Stack &s)//清空栈;
{
    while (!Empty(s))
    {
        pop(s);
    }
}

void exch(Stack &s,char a[],int n)//判断是否为回文串;
{
    int i;
    for (i=0; i<n; i++)
    {
        push(s,a[i]);
    }
    for (i=0; i<n; i++)
    {
        if (a[i]!=*s.top)
        {
            cout<<"no"<<endl;
            return ;//不等则判断结束;
        }
        else s.top--;
    }
    cout<<"yes"<<endl;
    return ;
}


int main()
{
    char a[101];
    Stack s;//栈的定义;
    Creat(s);//栈的初始化;‘
    cin>>a;
    int n;
    n=strlen(a);
    exch(s,a,n);//判断是否为回文串;
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值