大家可以帮我定义一下吗?
基于删除我在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
结束时,循环退出,这意味着temp1
和temp2
指向循环完成后要删除的节点。然后,您要删除之后的节点temp3
和temp4
。将条件更改为
while(temp2->after->kat != kat)
,您应该删除适当的节点。关于c++ - 基于给定的字符串数据类型的链表删除节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50671593/