回文数这个程序谁能帮我讲一下?

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:25:33
这是原程序代码
#include<stdio.h>
main()
{
char c,a[20];
int i=0,j=0,n;
struct list
{
char x;
struct list *next;
}list,*l,*r,*s;
l=(struct list *)malloc(sizeof(list));
l=NULL;
r=l;
do
{
s=(struct list *)malloc(sizeof(list));
scanf("%c",&c);
s->x=c;
a[i]=c;
i++;
s->next=r->next;
r->next=s;
}while(c!='\n');
n=i;
while(l->next->next!=NULL)
{
if(a[j]==l->next->next->x)
{
l->next->next=l->next->next->next;

}
else if(a[j]!=l->next->next->x)
{
printf("no");
break;
}
j++;
}
if(j==n-1)
printf("yes");
getch();
}

这程序实现过程是这样的,用了一个字符数组*a来顺序存储输入的字符,又用一个单链表的头插法逆序存储输入的字符,而后顺序比较这两串字符串,若该字符串为回文那么输出yes,否则no。

基本功能就是这样,但是程序的健壮性不是太好