因此,我试图创建一个基本的单链列表,不带尾,并使用另一个类“ 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;
}
}
答案 0 :(得分:1)
您忘记更新上一个节点的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!