伙计可以帮我解释一下这个问题吗?
基于删除我在youtube上看到的第n个位置上的链接列表节点,而不是使用int数据类型,我尝试使用字符串类型,代码工作,但它没有删除特定节点,而是删除特定节点后的节点节点
cat
在我的主要功能中:
void deletePower(string kat)
{
struct CValue* temp1 = head;
struct Lnama* temp2 = newHead;
if (temp2->kat == kat)
{
head = temp1->next;
newHead = temp2->after;
delete temp1;
delete temp2;
return;
}
while(temp2->kat != kat)
{
temp1 = temp1->next;
temp2 = temp2 ->after;
}
struct CValue* temp3 = temp1->next;
struct Lnama* temp4 = temp2->after;
temp2->after = temp4->after;
temp1->next = temp3->next;
delete temp3;
delete temp4;
}
当我删除pound时,它会删除日元而不是,如果我删除rupiah,那么在rupiah为空之后,所以是的...
答案 0 :(得分:0)
你的问题在这里:
while(temp2->kat != kat)
{
temp1 = temp1->next;
temp2 = temp2 ->after;
}
循环在temp2->kat == kat
时退出,这意味着temp1
和temp2
指向循环完成时要删除的节点。然后,您继续删除之后的节点temp3
和temp4
。
将条件更改为while(temp2->after->kat != kat)
,您应该删除正确的节点。