【发布时间】:2017-04-20 03:34:45
【问题描述】:
所以我试图根据节点的位置(整数)然后按日期(年和月)对节点进行排序。当我使用重载运算符打印我的链表时,它表明该列表只插入了一个想要的节点,这意味着我的插入函数不正确。它没有给出任何错误,只是没有按预期运行。我的插入功能如下。有没有人知道什么是错的?
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的地方怎么办? 找到插入新节点data的位置后,为什么还要继续循环遍历列表? -
我在上面的构造函数中将 head 和 tail 初始化为 nullptr。
-
我提到的剩下的问题呢?您是否尝试过调试程序? IE。在调试器中逐行执行代码。能够使用调试器对任何程序员来说都是至关重要的,即使这只是一种爱好。也请花些时间read about how to debug small programs。
标签: c++ node.js linked-list sortedlist