gpt4 book ai didi

c++ - 链表根据给定的字符串数据类型删除节点

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:33 27 4
gpt4 key购买 nike

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

基于我在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com