链表基于给定的字符串数据类型删除节点

时间:2018-06-03 22:36:01

标签: c++

伙计可以帮我解释一下这个问题吗?

基于删除我在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为空之后,所以是的...

1 个答案:

答案 0 :(得分:0)

你的问题在这里:

while(temp2->kat != kat)
{
    temp1 = temp1->next;
    temp2 = temp2 ->after;
}

循环在temp2->kat == kat时退出,这意味着temp1temp2指向循环完成时要删除的节点。然后,您继续删除之后的节点temp3temp4

将条件更改为while(temp2->after->kat != kat),您应该删除正确的节点。