问题:建表输出正常,但是调用equal函数后不输出不运行,是哪里写的不对吗?
题目:判断循环双链表L是否对称
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
typedef struct DLnode
{
int data;
struct DLnode *next;
struct DLnode *prior;
}DLinkNode;
void InitList(DLinkNode *&L)
{
L=(DLinkNode *)malloc(sizeof(DLinkNode));
L->prior=L->next=NULL;
}
void CreatList(DLinkNode *&L,int a[],int n)
{
DLinkNode *p,*r;
L=(DLinkNode *)malloc(sizeof(DLinkNode));
r=L;
for(int i=0;i<n;i++)
{
p=(DLinkNode *)malloc(sizeof(DLinkNode));
p->data=a[i];
r->next=p;
p->prior=r;
r=p;
}
r->next=NULL;
}
void DispList(DLinkNode *&L)
{
DLinkNode *p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
bool equal(DLinkNode *L)
{
bool same=true;
DLinkNode *p=L->next,*q=L->prior;
while(same)
{
if(q->data!=p->data)
same=false;
else
{
if(p==q||p->next==q) break;
p=p->next;
q=q->prior;
}
}
return same;
}
int main()
{
DLinkNode *L;
int a[7];
InitList(L);
printf("请输入:");
for(int i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
CreatList(L,a,7);
printf("请输出:");
DispList(L);
equal(L);
printf("链表是%s的",(equal(L))?"对称":"不对称");
}