大家可以帮我定义一下吗?

基于删除我在youtube上看到的第n个位置上的链表节点,而不是使用int数据类型,而是尝试使用字符串类型,该代码有效,但不是删除特定节点,而是在特定节点之后删除节点

 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;
}

在我的主要职能中:
int main()
{
    string first;
    head = NULL;
    newHead = NULL;
    insertMYR(5,1);
    insertMYR(10,2);
    insertMYR(56,3);
    insertMYR(56,4);
    insertLIST("USD",1);
    insertLIST("POUND",2);
    insertLIST("YEN",3);
    insertLIST("RUPIAH",4);
    display();

    cin>>first;
    deletePower(first);

    display();
    system("pause");
    return 0;
}

当我删除英镑时,它将改为删除日元,如果我删除了印尼盾,那么在印尼盾为空之后,那么是的...

最佳答案

您的问题在这里:

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

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

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

关于c++ - 基于给定的字符串数据类型的链表删除节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50671593/

10-12 12:25
查看更多