c++ - 链表c ++插入,所有情况都检查但没有任何效果
问题描述
所以我试图制作一个基本的单链表,没有尾巴,并打算使用另一个类“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!
推荐阅读
- d3.js - 基于 vega lite API 的具有定量和标称属性的交叉过滤器
- java - Java:无法获得“好的”随机索引号
- sql - 尝试将两个表连接在一起以使 unit_price 根据日期而变化
- java - 我无法使用 Java PDFWriter 将₺(土耳其里拉)图标添加到文件中
- python - Raspberry Pi 麦克风出现语音识别错误
- python-3.x - 过滤分类分级变量 pandas
- docker - Singularity 有什么类似于 Docker 网络的东西吗?
- razor - 在 2sxc 应用程序的详细信息视图中隐藏英雄(或其他模块)的最佳方法是什么?
- node.js - 节点 Js 和猫鼬日期模式不起作用
- delphi - 关于计时器游戏delphi 7的改革问题