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