void deleteElement(LinkedListElement<char> *&pending)
{
if (pending->Next) {
char value = pending->Next->Data;
pending->Data = value;
LinkedListElement<char> *temp = pending->Next;
pending->Next = pending->Next->Next;
delete temp;
}else{
delete pending;
pending = NULL;
}
}
LinkedListElement<char> *l1 = new LinkedListElement<char>('a');
LinkedListElement<char> *l2 = new LinkedListElement<char>('b');
LinkedListElement<char> *l3 = new LinkedListElement<char>('a');
LinkedListElement<char> *l4 = new LinkedListElement<char>('c');
l1->setNext(l2); l2->setNext(l3); l3->setNext(l4);
printLinkedList(l1);
deleteElement(l4);
printLinkedList(l1);
我想问的 C++ 中简单棘手的删除节点在 else 语句中,如果链表是 end ,那么我可以删除 end 本身。
但是两个打印功能,总是打印abac,第二种方式是abac。因为我只是通过引用传递参数,(&),我想如果我想删除 l4 我不需要更改 l3->Next,因为我可以将 l4 更改为 NULL,而 l3->Next 将是 NULL。
我尝试使用
delete pending; pending=NULL;
为什么它不起作用,两个打印功能总是打印abac