【数据结构·C语言】请高手帮忙检查一个关于双向循环链表的算法是否正确

2024-12-22 17:55:50
推荐回答(1个)
回答1:

Status Locate_D(DulLinkList &L,ElemType x)
{
ElemType p=L;//错误:DulLinkList p=L;
while(p->next!=L&&p->next->data!=x)
p=p->next;
if(p->next->data==x)
{ p->next->freq+=1; q=L;
while(p->next->freqnext->freq&&q->next!=L)//应该改成while(p->next->freqnext->freq&&q->next!=p->next)吧,首先来讲这个表本来就是按频率有序的
q=q->next;
/*q->next=p->next;
q->next-next->prior=p-next;
p->next=p->next->next;
p->next->prior=p;*/改为:
p->next->next=q->next;
p->next->prior=q->next->prior;

q->next->prior->next=p->nextt;
q->next->prior=p->next;

return p;//return 1;
}
else return NULL;
}//Locate_D