C++ 添加到循环链接列表时遇到问题

C++ 添加到循环链接列表时遇到问题,c++,nodes,circular-list,C++,Nodes,Circular List,我试图写一个双循环链表。据我所知,代码实际上应该创建一个循环链表 我从第一个节点的上一个和下一个节点指向自身的特殊情况开始 然后创建一个临时节点,该节点的下一个节点指向当前磁头,然后将当前磁头的pPrev指针指向该临时节点。这将在temp和列表的其余部分之间建立链接。然后我让temp的pPrev转到尾部,然后尾部的pNext转到temp,我认为应该处理循环。然后关闭我改变温度成为新的头 当我从头指针打印时,唯一要打印的是一遍又一遍的第一个节点。我看不出这个实现在哪里出了问题。如果有人能告诉我我哪

我试图写一个双循环链表。据我所知,代码实际上应该创建一个循环链表

  • 我从第一个节点的上一个和下一个节点指向自身的特殊情况开始
  • 然后创建一个临时节点,该节点的下一个节点指向当前磁头,然后将当前磁头的
    pPrev
    指针指向该临时节点。这将在temp和列表的其余部分之间建立链接。然后我让temp的
    pPrev
    转到尾部,然后尾部的
    pNext
    转到temp,我认为应该处理循环。然后关闭我改变温度成为新的头 当我从头指针打印时,唯一要打印的是一遍又一遍的第一个节点。我看不出这个实现在哪里出了问题。如果有人能告诉我我哪里出了问题,我将不胜感激。提前谢谢

    void addNodeToStart(Node*& pHead, Node*& pTail, int input) {
        Node* pTemp = new Node;
        pTemp->data = input;
    
        if (pHead == NULL) {
            pTemp->data = input;
            pTemp->pNext = pTemp;
            pTemp->pPrev = pTemp;
    
            pHead = pTemp;
            pTail = pTemp;
        } else {
            pTemp->pNext = pHead;
            pHead->pPrev = pTemp;
            pTemp->pPrev = pTail;
            pTail->pNext = pTemp;
        }
    
        pHead = pTemp;
    }
    

    代码似乎很好。你如何调用函数???也许您每次都在向pHead传递空值!!没关系,可能您打印错误,我有Node*pHead=NULL;Node*pTail=NULL;在我的主要任务的顶端。然后有一个do-while循环,用于用户可以输入的多个输入号码,我使用addNodeToStart调用函数(pHead、pTail、input);一旦第一次传递空值,我认为我的代码中的if(pHead==null){}部分会更改空值部分,您如何打印?它对我有用。它似乎对我有用,但你不需要第二个
    pTemp->data=input
    。循环链表有尾巴真的有意义吗?