0
所以我想根据它们的位置(一个整数)然后按日期(年和月)对节点排序。当我使用我的重载操作符来打印我的链表时,它显示列表只插入其中一个想要的节点,这意味着我的插入函数不正确。它没有给出任何错误,它只是没有按预期运行。我的插入功能如下。有没有人有什么错误的想法?有多个参数的链接列表问题
void LinkedList::insert(int location, int year, int month, double temperature) {
// Implement this function
Node* newNode = new Node();
newNode->loc = location;
newNode->yr = year;
newNode->mo = month;
newNode->temp = temperature;
Node* tempNode = head;
Node* previousNode = nullptr;
if(tail == nullptr & head == nullptr){
head = newNode;
}
while(tempNode != nullptr){
if((tempNode->loc == newNode->loc) && (tempNode->yr == newNode->yr)){
if(tempNode->mo > newNode->mo){
newNode->next = tempNode->next;
tempNode->next = newNode;
}
if(tempNode->mo < newNode->mo){
newNode->next = tempNode;
}
}
if(tempNode->loc > newNode->loc){
newNode->next = tempNode->next;
tempNode->next = newNode;
}
if(tempNode->loc < newNode->loc){
newNode->next = tempNode->next;
tempNode->next = newNode;
}
tempNode = tempNode->next;
}
}
当你创建新节点'data'时,'data-> next'指向哪里?你如何初始化'head'和'tail'?如果你循环遍历整个列表,但是找不到插入新节点'data'的地方?为什么一旦你找到了插入新节点数据的地方,为什么还要循环遍历列表呢? –
我在上面的构造函数中将头部和尾部初始化为nullptr。 –
我提到的其余问题如何?您是否尝试过调试该程序?即在调试器中逐行执行代码。能够使用调试器对于任何程序员来说都是至关重要的,即使它只是一种爱好。也请花点时间[阅读如何调试小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –