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);
リンクされたリストが end の場合、C++ の単純なトリッキーな削除ノードは、else ステートメントにあるので、末尾自体を削除することができます。
ただし、2 つの出力関数は、常に abac を出力し、2 番目の方法では abac を出力します。参照 (&) を使用してパラメーターを渡すだけなので、l4 を削除する場合は、l3->Next を変更する必要はないと思います。l4 を NULL に変更すると、l3->Next が NULL になるからです。
私は使用しようとします
delete pending; pending=NULL;
なぜそれが機能しないのか、2つの印刷機能は常にabacを印刷します