请教一下这道题目,大家给小生看看吧
题目是:假设称正读反读都相同的字符序列为回文。例如,‘abba’,‘abcba’都是回文, ‘ababab’不是回文,试编写程序判别从标准输入读入的以’@’为结束符的字符序列是否是回文。这道题用栈和队列做应该会比较简单,所以我想用链表来做一下,用双向循环链表应该也很简单,但是貌似我链表建错了,刚学,不明白了,求指教
#include "stdafx.h"
#include "stdlib.h"
typedef char dataype;
typedef struct dnode
{
dataype data;
struct dnode *prior,*next;
}dlinklist;
void main(int argc, char* argv[])
{dlinklist *head,*s,*a,*p,*q;
int i=1;
head=(dlinklist*)malloc(sizeof(dlinklist));
a=head;
char ch;
printf("input data:\n");
ch=getchar();
while(ch!='@')
{
s=(dlinklist*)malloc(sizeof(dlinklist));
s->data=ch;
a->next=s->prior;
s->next=head;
a=s;
ch=getchar();
i++;
}
s->next=head;
p=head->next;
q=head->prior;
if(i%2==0)
{ while (p->data==q->data)
{
p=p->next;
q=q->prior;
if(p->next=q)
{
printf("×?·?DòáD?a????");
break;
}
}
printf("×?·?DòáD2?ê?????");
}
else
{
while (p->data==q->data)
{
p=p->next;
q=q->prior;
if(p->next=q->prior)
{
printf("×?·?DòáD?a????");
break;}
}
printf("×?·?DòáD2?ê?????");
}
}