回文串判定
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入一串字符(长度小于100),判断该串字符是否是回文串(正序读与逆序读内容相同)。
输入
输入一串字符(长度小于100)。
输出
若该串字符是回文串输出“yes",否则输出”no“。
示例输入
asdfgfdsa
示例输出
yes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXsize 110
char str[101];
typedef char ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int length;
int stacksize;
}SQ;
int InitStack(SQ &S)
{
S.base=(ElemType *)malloc(MAXsize*sizeof(ElemType));
if(!S.base) exit(-1);
S.top=S.base;
S.length=MAXsize;
S.stacksize=MAXsize;
}
int Push(SQ &S,ElemType e)
{
*S.top++=e;
return 1;
}
int Pop(SQ &S,ElemType &e)
{
if(S.base==S.top) return 0;
e=*--S.top;
return 1;
}
int IsEmpty(SQ &S)
{
if(S.base==S.top) return 1;
return 0;
}
int main()
{
while(~scanf("%s",str))
{
int len,flag=0,m;
ElemType e;
len=strlen(str);
SQ S;
InitStack(S);
if(len%2==0) m=len/2-1;
else m=len/2;
for(int i=0;i<=m;i++)
{
Push(S,str[i]);
}
for(int j=len/2;j<=len-1;j++)
{
Pop(S,e);
if(e!=str[j])
{
flag=0;
break;
}
else flag=1;
}
if(IsEmpty(S)&&flag==1)
printf("yes\n");
else
printf("no\n");
}
}