回文是指正读和反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文,试写一个算法判定给定的字符向量是否为回文。
#include
#include
#define MAXSIZE 100
typedef struct
{
char a[MAXSIZE];
int toppoint;
} sequence_list;
/*初始化栈*/
void init(sequence_list *pt)
{
pt->toppoint=0;
}
/*输入函数*/
void input(char *data)
{
printf("请输入字符串:\n");
scanf("%s",data);
}
/*比较函数*/
int cmp(char data[],sequence_list *pt)
{
int a,b=0,i,j,k;
a=strlen(data)%2;
switch(a)
{
case 0:
for(i=0; i<=strlen(data)/2; i++)
{
pt->a[i]=data[i];
pt->toppoint++;
}
pt->toppoint--;
for(j=pt->toppoint-1,k=pt->toppoint; j>=0; j--,k++)
{
if(pt->a[j]!=data[k])b++;
}
break;
case 1:
for(i=0; i<=strlen(data)/2; i++)
{
pt->a[i]=data[i];
pt->toppoint++;
}
pt->toppoint--;
for(j=pt->toppoint-1,k=pt->toppoint+1; j>=0; j--,k++)
{
if(pt->a[j]!=data[k])b++;
}
break;
}
return b;
}
/*判断函数*/
void judge(int a)
{
if(a==0)printf("是回文\n");
else printf("不是回文\n");
}
int main()
{
sequence_list L;
char data[MAXSIZE];
init(&L);
input(&data[0]);
judge(cmp(data,&L));
return 0;
}