【问题标题】:C++ linked list adding a new node to the beginning of the listC ++链表将新节点添加到列表的开头
【发布时间】:2017-10-23 14:11:05
【问题描述】:

我正在努力解决如何将我正在创建的新节点链接到我的链表的其余部分。

template <class T>
void LinkedList<T>::addBeg(T value)
{
      ListNode *nodePtr = head;
      head = nodePtr->next;
      head = nodePtr;
      nodePtr = new ListNode(value);
}

我知道我在这里做错了什么:新值根本没有关联到链表。

我想我知道我需要做什么。我很确定我需要做的是创建新值,插入现有列表的开头,然后将 head 重新定义为新创建的值。

我遇到的问题是我不知道该怎么做。

所以,我认为我需要做的(至少在逻辑上)是设置

*nodePtr = new Listnode(value);

然后设置

nodePtr = head; 

然后设置

head = nodePtr-> next; 

然后设置

new ListNode(value) = head;

我在正确的轨道上吗?我无法摆脱我没有正确地将新 ListNode 链接到现有列表的那种烦人的感觉,而且我不知道我是在做错误的步骤还是我错过了一个步骤。

【问题讨论】:

  • nodePtr = new Listnode(value); nodePtr-&gt; next = head; head=nodePtr;

标签: c++ linked-list


【解决方案1】:

要在列表的头部创建一个新节点,请按照以下步骤操作

  1. 创建一个临时节点来保存你的值
  2. 设置临时节点的next指向头部
  3. 将头部设置为临时

【讨论】:

  • 谢谢,我还以为少了点什么。我什至玩弄过使用临时节点,但我想不出使用它的最佳方式。这也是完全被难住的第 2 个小时左右,所以我相信这也没有帮助。
  • 嘿,这发生在我们最好的人身上,很高兴它有所帮助。评论what to do when someone answered my question
【解决方案2】:

您首先必须创建一个新节点,然后将其链接到当前头部。然后将引用从之前的 head 切换到新创建的节点。

ListNode *newHead = new ListNode;
newHead->next = head;
head = newHead;

【讨论】:

    【解决方案3】:

    仔细考虑你拥有什么以及你需要做什么:

    • 您有两个需要关注的节点:当前的head 和新的nodePtr
    • 您希望nodePtr-&gt;next 指向您当前的头,并更新头以指向nodePtr,以便这是列表中的第一个节点。

    你做事的顺序很重要:如果你在让nodePtr-&gt;next指向之前的值之前分配head的新值,你将失去整个列表! 因此:

    1. 创建新节点nodePtr
    2. 使nodePtr-&gt;next指向头部。
    3. 将头部指向nodePtr

    【讨论】:

      【解决方案4】:

      你走错路了。解决方案是创建新节点,将下一个节点链接到head,然后将head引用到新节点:

      template <class T>
      void LinkedList<T>::addBeg(T value)
      {
          ListNode *nodePtr = new ListNode(value);
          nodePtr->next = head;
          head = nodePtr;
      }
      

      【讨论】:

        【解决方案5】:

        如果您说nodePtr = head;,那么您只是在覆盖您刚刚创建的指针。你要改nodePtr-&gt;next = head; head = nodePtr;

        【讨论】:

          猜你喜欢
          • 2021-06-28
          • 1970-01-01
          • 2012-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-23
          • 2020-05-18
          相关资源
          最近更新 更多