C++ 堆栈链接列表实现 bool-LinkedStack::push(const-ItemType和newItem) { Node*newNodePtr=新节点(newItem,topttr); topttr=newNodePtr; newNodePtr=nullptr; 返回true; }

C++ 堆栈链接列表实现 bool-LinkedStack::push(const-ItemType和newItem) { Node*newNodePtr=新节点(newItem,topttr); topttr=newNodePtr; newNodePtr=nullptr; 返回true; },c++,data-structures,stack,C++,Data Structures,Stack,我有点困惑为什么我们必须在这个push函数中使用newNodePtr=nullptr。 据我所知,我们创建节点,用netItem设置其数据,并将其下一个设置为topPtr,这将是堆栈中的第一项。然后,我们将topttr设置为指向刚刚创建的newNodePtr。。在那一行之后,我不确定为什么我们要将newNodePtr设置为nullPtr。。这不会让我们失去链条的其余部分。。有人能解释一下这一行吗?为什么在这里用这一行作为堆栈是C++吗?添加语言标记。“…为什么我们必须这样做…”-您不需要。您甚至

我有点困惑为什么我们必须在这个push函数中使用newNodePtr=nullptr。
据我所知,我们创建节点,用netItem设置其数据,并将其下一个设置为topPtr,这将是堆栈中的第一项。然后,我们将topttr设置为指向刚刚创建的newNodePtr。。在那一行之后,我不确定为什么我们要将newNodePtr设置为nullPtr。。这不会让我们失去链条的其余部分。。有人能解释一下这一行吗?为什么在这里用这一行作为堆栈

是C++吗?添加语言标记。“…为什么我们必须这样做…”-您不需要。您甚至不需要该变量:
topttr=newnode(newItem,topttr)足够了。在这种情况下,将newNodePtr设置为nullPtr的原因是什么?我想不出任何原因。newNodePtr在下一行之后不在范围内。@georgiyd91是的,这是正确的。它只是保存一个地址,不管您如何保存到
topttr
,因此如果您正在调试,并且希望同时看到新节点和旧顶部,那么它几乎是无用的。新节点的
next
指针已经保存了旧顶部。所以是的,它毫无价值。
bool LinkedStack<ItemType>::push(const ItemType& newItem)
{
    Node<ItemType>* newNodePtr = new Node<ItemType>(newItem, topPtr);               
    topPtr = newNodePtr;
   newNodePtr = nullptr;

    return true;
}