繁体   English   中英

链接列表,Confused about将节点添加到列表头部的函数

[英]Linked list,Confused about Function that adds node to head of the list

我有一个关于添加创建/添加新节点到列表顶部的函数的问题。 这是设置。

在主程序中创建一个头。 我们将列表设置为Null

IntNode* head = new IntNode(3,NULL);

我的问题是关于将节点添加到列表顶部的功能。 假设列表中至少有一个节点(我们刚创建的节点)

void headInsert(IntNodePtr& head, int theData)
{
    head = new IntNode(theData, head);
}

我知道它创建了一个新节点,并使已经在主程序中声明的指针(通过)指向新节点。 但是我对他在构造函数(而不是headInsert函数)中的“头”部分感到困惑。 当我们在上面的IntNode构造函数中传递头部时,我很困惑。 那个头设置变量链接,指向头指向正确的是什么? ******我的问题是,它首先设置* link(类变量)指向head指向的是什么,在这种情况下,数字为3的节点,其列表指向NULL,然后得到头到新的NODE? 换句话说,首先完成作业的正确部分? 我对创建新节点时传入的内容感到非常困惑。

class IntNode
{
    public:
    IntNode( ) {}
    IntNode( int theData, IntNode* theLink)
    : data(theData), link(theLink) {}
    IntNode* getLink( ) const { return link; }
    int getData( ) const { return data; }
    void setData( int theData) { data = theData; }
    void setLink(IntNode* pointer) { link = pointer; }
    private:
    int data;
    IntNode *link;
    };




void headInsert(IntNodePtr& head, int theData)
{
    head = new IntNode(theData, head);
}

评估任务的各方 -

head

new IntNode(theData, head)

根本没有订购,但在执行任务之前,双方都已完全评估。 由于任何一方都不修改head的值,因此无论评估顺序如何,结果都是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM