NODE* InsertAtHead(NODE* &head, int val){
NODE *tmp = new NODE;
//create a new node
if (tmp == NULL)
exit(1);
//Initialize the new node
tmp->data = val;
tmp->next = NULL;
//Insert by changing links
tmp->next = head;
head = tmp; //update head
return head;
}
为什么到底要放return head呢?
最佳答案
您拥有的链表是一个单向链表。它只有 next 的引用,所以你只能迭代到最后。如果你有一个指向开头的指针,你可以找到所有东西,但如果你有一个指向中间的指针,你就不知道开头。
在这个函数中,你在前面添加,它创建了一个新的开始。如果您不返回新的开始,那么调用函数将不知道该元素。
这是非常重要的,因为您正在使用 new 分配内存,如果它没有被释放,就会发生内存泄漏。除非调用函数具有此指针,否则无法释放它。
关于c++ - 为什么我需要返回链表中的头部?C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051979/