c++ - 为什么我需要返回链表中的头部?C++

标签 c++ data-structures

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/

相关文章:

c++ - 无法理解移动语义

c++ - Visual Studio 2008 中的嵌套继承问题

python - 通过 Python 将列表传递给 C++

algorithm - 数据结构问题

c++ - 文本编辑器中的行管理

c++ - 为什么这个 lambda 可以流式传输?

c++ - 数字递增测试

java - JAVA的引用和C、C++的引用有区别吗?

c - 如何实现可变长度的异构结构序列

algorithm - 如何求解算术表达式 DAG?