所以,我一直在研究链表回推,每次我得到一些奇怪的输出,有人可以帮助看到我做错了什么吗?
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;
}
因为在第一次推送的情况下,该项目将入两次。