需要帮助为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()
然后,如果下一个节点为空或下一个节点的数据大于试图添加的数据,则循环将停止。循环完成后,您必须插入逻辑以确定是哪种情况。这是一个排序列表吗?顺便说一句:此站点上有一千零一个列表实现。