【问题标题】:Modifying Linked Lists in C++在 C++ 中修改链表
【发布时间】:2012-04-02 13:30:14
【问题描述】:

我正在尝试编写一个函数来将节点添加到链表的任意位置。

这是我目前所拥有的:

 ListNode* addNode( ListNode* pHead, ListNode* pNode, int pos )
 {
      if( pHead == NULL )
      {
           pHead = pNode;
      }
      else if( pos == 0 )
      {
           pNode->pNextNode = pHead;
           pHead = pNode;
      }
      else
      {
           ListNode* pTempNode = pHead;
          for(int i = 0; i < pos; i ++)
           {
                if(pTempNode->pNextNode != NULL)
                {
                     pTempNode = pTempNode->pNextNode;                    
                }
                else
                {
                     break;
                }
           }
           pNode->pNextNode = pTempNode->pNextNode;
           pTempNode->pNextNode = pNode;

           pHead->pNextNode = pTempNode;
      }

     return pHead;
 }

问题在于,当尝试添加不在前面的节点时,中间会剪掉一些节点。我只是不知道在列表中搜索位置、插入新节点然后返回整个列表的正确方法。

【问题讨论】:

    标签: c++ linked-list nodes


    【解决方案1】:

    您的代码看起来不错,只是这行似乎没有必要:

    pHead->pNextNode = pTempNode;
    

    还有一个错误,你需要从 1 而不是 0 开始你的 for 循环。

    【讨论】:

      【解决方案2】:

      这不是必需的,你应该删除它:

      pHead->pNextNode = pTempNode;
      

      它将删除pTempNode之前的节点。

      祝你好运

      【讨论】:

        猜你喜欢
        • 2020-03-22
        • 1970-01-01
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        • 2011-10-12
        • 1970-01-01
        相关资源
        最近更新 更多