void List::delete_Node(const int pos){ Node *p = this->Head; for (int i = 0;i < pos - 1; ++i) { p = p->next; } p->next = p->next->next; delete p; q = p = nullptr;}
//函数如上
执行结果
而且有16字节的内存泄露
完整代码:http://codepad.org/z8SaSRXz
http://codepad.org/EwSPebht
您说的没错,代码中p是指向要删除元素的上一个元素,delete的是p->next
追答可是你的
p->next = p->next->next;
delete p;
删除的是p所指的结点啊。
如果p是指向要删除元素的上一个元素的,则代码应该是这样的:
void List::delete_Node(const int pos)
{
Node *p = this->Head;
for (int i = 0;i next;
}
q = p->next;
p->next = q->next;
delete q;
q = p = nullptr;
}
按你的代码,成功了,内存泄露也解决了,我知道哪里错了,我之前写的是delete p->next;却忘了我已经修改p->next的值了。。。