给定一个链表头指针A,请返回一个bool值,代表其是否为回文结构。链表长度小于等于900。
#include<stdio.h>
#include<stdlib.h>
typedef struct Dulnode
{
int data;
struct Dulnode *prior;
struct Dulnode *next;
}Dulnode,*Dulinklist;
Dulinklist L;
int n;
int flag;
void creat(Dulinklist &L)
{ int i;
char c;
Dulinklist p,r;
p=r=(Dulinklist)malloc(sizeof(Dulnode));
scanf("%d",&p->data);
c=getchar();
L=p;
for(i=1;c!='\n';i++)
{
p=(Dulinklist)malloc(sizeof(Dulnode));
scanf("%d",&p->data);
c=getchar();
if(i==1)
{
p->prior=L;
p->next=L;
L->next=p;
L->prior=p;
}
else
{
p->prior=r;
p->next=L;
r->next=p;
L->next=p;
}
n=i;
}
}
int main()
{
int i;
flag=1;
Dulinklist pt,pf;
L=(Dulinklist)malloc(sizeof(Dulnode));
L->prior->next=L->next->prior=L;
creat(L);
pt=L;
pf=L->next;
while(pt->next!=L)
pt=pt->next;
for(i=0;i<n/2;i++)
{if(pf->data!=pt->data)
{
flag=0;
break;
}
pf=pf->next;
pt=pt->prior;
}
if(flag==1) printf("true");
else printf("false");
return 0;
}