【发布时间】:2012-12-06 21:12:47
【问题描述】:
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);
我想问的是在 else 语句中的简单棘手的删除节点,如果链表是 end ,那么我可以删除 end 本身。
但是两个打印函数,总是打印abac,第二个方式是abac。 因为我只是通过引用传递参数,(&),我想如果我想删除l4 我不需要更改l3->Next,因为我可以将l4更改为NULL,而l3->Next将为NULL。
我尝试使用
delete pending; pending=NULL;
为什么不起作用,两个打印功能总是打印abac
【问题讨论】:
-
我真的很喜欢你的标题。
-
发生了什么让您相信自己做不到?
-
您应该尝试解释您的实际问题是什么,它是编译问题,运行时?正如克里斯所说 - 会发生什么
-
我改了,你能再看看吗!
标签: c++