题目要求使用链表进行图书去重,书号唯一。
对输出进行测试发现我在删除节点时,将图书信息重复的两个节点都进行了删除,导致对后面图书的重复判断产生影响,不知道为什么会这样,该怎样改正呢,谢谢!
这是我的代码
int DupRemoval_L(LinkList &L)
{//图书去重
/**************begin************/
int i=0,j,f;
LNode *r;
LNode *p=L->next->next,*q=L;
while(p!=NULL){ //p从第二本图书开始循环
r=L->next;i++;j=i; //i,j用来标记内层while循环次数
f=0; cout<<i<<endl; //f标记是否重复,初值为0,若重复则为1
while(j--) //要比较的图书个数
{
if(strcmp(r->data.no,p->data.no)==0) //r为每次要比较的图书,若书号相等,则f标记为1,否则r变为下一本图书进行比较
{
f=1;break;
}
else r=r->next;
}
if(f==0) {p=p->next;q=q->next;} //比较完成,若f仍为0,则p变为下一本图书,判断有无重复,否则删掉该节点。
else {
q->next=p->next;
delete p;
p=q->next;
i=i-1;
}
}
return OK;
/**************end************/
}
这是想要的输出
这是我的输出