题目描述
输入一串字符(长度小于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;
}