链表c++插入,所有情况都已检查,但没有任何工作

Linked list c++ inserting, all cases checked but nothing works

本文关键字:检查 工作 任何 情况 c++ 插入 链表      更新时间:2023-10-16

所以我正在尝试制作一个基本的无尾单链表,并使用另一个类"CarObject"将其添加到我的CarList中,这基本上就是我的链表。唯一的问题是,在写出代码并测试后,似乎什么都无法打印/工作,我甚至根本没有收到错误。我有点不知所措,不确定自己做错了什么。

更新:假设我们忽略我的代码,但您将如何实现向链表(无尾(添加函数

class CarList
{
class NodeType{
friend class CarList;
private:
CarObject* data;
NodeType* next;
};

public:
void addCar(CarObject*);

private:     
NodeType *head;

};
void CarList::addCar(CarObject *car){

NodeType* newNode;
NodeType* currNode;

newNode = new NodeType;
newNode->data = car;
newNode->next = NULL;
currNode = head;

while (currNode != NULL) {
if (car->getYearModel().lessThan(currNode->data->getYearModel()))
break;
currNode = currNode->next;
}
newNode->next = currNode;
}
void CarList::print(){
NodeType* currNode = head;
while (currNode != NULL) {
currNode->data->printTheCarInfo();
currNode = currNode->next;
}

}

您忘记更新上一个节点的next指针:

NodeType* prevNode = NULL;
while (currNode != NULL) {
if (car->getYearModel().lessThan(currNode->data->getYearModel()))
break;
prevNode = currNode; //remember the previous node
currNode = currNode->next;
}
newNode->next = currNode;
if (prevNode)
prevNode->next = newNode;
else
head = newNode; //if there's no previous node - newNode is the new head!