【发布时间】:2019-03-24 22:42:50
【问题描述】:
哟,我在 C++ 中搞乱了单个链接列表,我遇到了这种困惑。我在 insert 函数中创建了一个指针,但我不确定它是否会被删除。
我想如果我像这样将它推几个街区就可以删除它:temp = temp->next->next 但它看起来很傻。
void List::insert(int data){
Node* newNode = new Node(data);
newNode->next = nullptr;
if(isEmpty())
{
head = newNode;
std::cout << "empty";
}else{
Node* temp = head;
while(temp->next!=nullptr){
temp = temp->next;
}
temp->next = newNode;
delete temp; //If i remove this the program works ok and it is reasonable,since i delete the ref
}
}
我很确定我应该删除节点,但我不是 100% 确定我必须这样做。有任何线索吗?
【问题讨论】:
-
不要使用原始指针和
new/delete,你ain't gonna need it。 -
而且不要实现链表!为什么哦,为什么人们会这样做?有史以来最没用的数据结构。
-
不,它不符合您的预期。您在
newNode之前删除了对象,因此您在insert函数中删除了对象,并且永远失去了新创建的节点。 -
@NeilButterworth 因为老师要求他们这样做。它几乎是最简单的数据结构,就在向量之后。老实说,如果你不实现自己的傻链表,你怎么知道它是如何工作的以及使用它的成本有多大?
-
是的,几乎是@Yksisarvinen。我猜我的人 Neil 刚刚从
if直接转到 AI 编程
标签: c++ linked-list