链表,对将节点添加到链表头部的函数感到困惑

Posted

技术标签:

【中文标题】链表,对将节点添加到链表头部的函数感到困惑【英文标题】:Linked list,Confused about Function that adds node to head of the list 【发布时间】:2015-09-06 05:39:38 【问题描述】:

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

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

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

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

void headInsert(IntNodePtr& head, int theData)

    head = new IntNode(theData, head);

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

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);

【问题讨论】:

首先评估作业的右侧。 C++ 中的求值顺序有严格的规定。 【参考方案1】:

对作业方面的评估 -

head

new IntNode(theData, head)

根本没有排序,但在执行分配之前,双方都已完全评估。 由于双方都没有修改head的值,所以无论求值顺序如何,结果都是一样的。

【讨论】:

以上是关于链表,对将节点添加到链表头部的函数感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

单链表LRU

线性表练习之Example038-编写一个函数将链表 h2 链接到链表 h1 之后,要求链接后的链表仍然保持循环链表形式

将元素添加到链表后面时出错

如何将对象添加到链表中?

编写程序,建立一个带有节点的单向链表,输入字符串,并按从小到大顺序组织到链表中

Scala链表***