【问题标题】:Linked list issue with multiple parameters具有多个参数的链表问题
【发布时间】: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-&gt;next指向哪里?你如何初始化headtail?如果您遍历整个列表但找不到插入新节点data 的地方怎么办? 找到插入新节点data的位置后,为什么还要继续循环遍历列表?
  • 我在上面的构造函数中将 head 和 tail 初始化为 nullptr。
  • 我提到的剩下的问题呢?您是否尝试过调试程序? IE。在调试器中逐行执行代码。能够使用调试器对任何程序员来说都是至关重要的,即使这只是一种爱好。也请花些时间read about how to debug small programs

标签: c++ node.js linked-list sortedlist


【解决方案1】:

您没有正确获取链表的原因是您在指针操作中犯了错误。当您分配cur-&gt;next=data-&gt;next; 你基本上打破了列表,因为data-&gt;next 指向列表中的下一个节点。 另外,请注意,由于这是一个单链表[意味着它只有一个向前的指针],因此您只能在当前节点之前插入节点。 试试这样的:

if (cur->loc > data->loc) { data->next = cur->next; // This will insert data in middle of cur->next = data; // cur and cur->next }

如果您想以递增或递减的顺序插入,则需要进行多项检查。 当您插入列表的第一个元素、在头部插入、在尾部插入和在链接列表的中间插入时,请使用不同的情况。
此外,在尾节点确保其下一个始终设置为 null。

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    相关资源
    最近更新 更多