C++单链表头部插入后无数据输出问题排查求助
问题分析与修复
你的链表打印不出数据,核心问题出在OfficeSpace类的insert方法里:
void insert (std::string name, std::string ipaddress, int iD) { Node* node = new Node(name, ipaddress, iD); node->next = head; head = node->next; // 这里是错误的! }
当你执行node->next = head时,新节点的next指向了当前的头节点(初始为NULL),但接下来你把head赋值成了node->next,也就是还是原来的head(一直是NULL),等于新节点根本没被加入到链表中,head永远不会更新,自然打印不出任何内容。
修正后的insert方法
把赋值语句改成直接让head指向新创建的节点:
void insert (std::string name, std::string ipaddress, int iD) { Node* node = new Node(name, ipaddress, iD); node->next = head; head = node; // 修正这里,让head指向新节点 }
这样每次插入新节点时,新节点成为新的头,原头节点挂在新节点的next上,链表就能正常构建了。
另外,你的print方法里,ipaddress输出后没有换行或空格,会导致和后面的iD:连在一起,建议调整输出格式,比如:
std::cout << temp->name << std::endl << temp->ipaddress << std::endl << "iD: " << temp->iD << std::endl;
这样输出会更清晰。
修正后运行代码,就能正常打印所有插入的节点数据了。
内容的提问来源于stack exchange,提问作者CGedeus
相关产品推荐
相关产品推荐

