需要帮助为C+;中的链表创建插入方法吗+; 所以我试图在C++中制作一个链表类,并且在插入新元素时遇到麻烦。我试图以这样一种方式插入它们,即链表在任何时候都将始终按升序排列,我相信这就是所谓的插入排序。无论如何,我的插入方法有一个问题,如果我尝试插入多个元素,我的getNext方法就会出现某种错误,它只是获取指向列表中下一个节点的指针。如果我只是一个接一个地插入数据,我的程序运行得很好,但出于某种原因,这给我带来了问题,你知道它可能是什么吗

需要帮助为C+;中的链表创建插入方法吗+; 所以我试图在C++中制作一个链表类,并且在插入新元素时遇到麻烦。我试图以这样一种方式插入它们,即链表在任何时候都将始终按升序排列,我相信这就是所谓的插入排序。无论如何,我的插入方法有一个问题,如果我尝试插入多个元素,我的getNext方法就会出现某种错误,它只是获取指向列表中下一个节点的指针。如果我只是一个接一个地插入数据,我的程序运行得很好,但出于某种原因,这给我带来了问题,你知道它可能是什么吗,c++,list,linked-list,insertion,C++,List,Linked List,Insertion,插入方法: void insert(int data){ ListNode *NewNode = new ListNode(data, NULL); ListNode *temp = Head; if(Head -> getNext() == NULL){ Head -> setNext(NewNode); cout<<data<<" has been inserted"<<endl;

插入方法:

void insert(int data){
    ListNode *NewNode = new ListNode(data, NULL);
    ListNode *temp = Head;
    if(Head -> getNext() == NULL){
        Head -> setNext(NewNode);
        cout<<data<<" has been inserted"<<endl;
    }
    else{
        while((temp -> getNext() != NULL) || (temp -> getNext() -> getData() < data)){
            temp = temp -> getNext();

        }
        if(temp -> getData() == data){
                cout<<"Data is already in list"<<endl;
                return;
            }
        if(temp -> getNext() != NULL){
            temp ->setNext(NewNode);
            cout<<data<<" has been inserted"<<endl;
            return;
        }
        if(temp -> getNext() -> getData() > data){
            NewNode -> setNext(temp -> getNext());
            temp ->setNext(NewNode);
            cout<<data<<" has been inserted"<<endl;
            return;
        }
    }
}
void插入(整数数据){
ListNode*NewNode=新ListNode(数据,空);
ListNode*temp=头部;
if(Head->getNext()==NULL){
Head->setNext(新节点);

cout首先,如果(Head->getNext()==NULL)
修复这个
if(Head->getNext()==NULL)
。这不包括以空列表开始的可能性,所以检查Head==NULL是否为true,如果为true,则新节点变为Head

如果不查看代码的其余部分,则while循环条件是错误的。循环将一直运行,直到下一个节点为NULL,因为数据检查将短路。请尝试使用and运算符

while((temp->getNext()!=NULL)和&(temp->getNext()->getData()


然后,如果下一个节点为空或下一个节点的数据大于试图添加的数据,则循环将停止。循环完成后,您必须插入逻辑以确定是哪种情况。

这是一个排序列表吗?顺便说一句:此站点上有一千零一个列表实现。