链接列表的Push_back函数出错



所以,我一直在研究链表回推,每次我得到一些奇怪的输出,有人可以帮助看到我做错了什么吗?

void IntList::push_back(int ne) {
if(head == NULL)
    tail = head = new IntNode(ne);
IntNode *nes = new IntNode(ne);
IntNode *remp = head;
while (remp->next != NULL)
    remp = remp->next;
remp->next = nes;
}

我一直得到一些奇怪的输出,我的电话是

IntList a;
a.push_back(46);
a.push_back(20);
a.push_back(777);
a.select_sort();
a.insert_sorted(800);
a.display();
cout << endl;

它输出 20 46 46 777 800

当列表为空时,仅推送单个项目并返回

if(head == nullptr) // using nullptr instead of NULL
{
    tail = head = new IntNode(ne);
    head->next = nullptr;
    return;
}

因为在第一次推送的情况下,该项目将入两次。

相关内容

  • 没有找到相关文章

最新更新