C++ 在C+中调用链表函数+;
我创建了两个名为nodelist.h和nodelist.cpp的文件,其中的函数基本上包含基本的链表函数,例如(例如addNode、printNode…等)。之后,我创建了另一个源文件,以利用该类中创建的函数,如下所示:C++ 在C+中调用链表函数+;,c++,linked-list,C++,Linked List,我创建了两个名为nodelist.h和nodelist.cpp的文件,其中的函数基本上包含基本的链表函数,例如(例如addNode、printNode…等)。之后,我创建了另一个源文件,以利用该类中创建的函数,如下所示: #include "NodeList.h" bool insertR(stringstream &lineStream) { int node1,node2; lineStream>> node1 >> node2;
#include "NodeList.h"
bool insertR(stringstream &lineStream)
{
int node1,node2;
lineStream>> node1 >> node2;
nodelist *n1 = new nodelist; //EDIT: FIXED
nodelist *n2 = new nodelist; // EDIT: FIXED
n1->addNode(node1);
n2->addNode(node2);
n1->print();
n2->print();
return true;
}
请注意,此函数不在main中,它是main调用的另一个源文件。我的nodelist.cpp工作正常,尽管该程序运行,但当我输入节点值时,我的程序崩溃。有什么帮助吗
这是我的节点列表文件:
#include <iostream>
#include "NodeList.h"
using namespace std;
nodelist::nodelist(){
head = NULL;
current = NULL;
temp = NULL;
}
void nodelist::addNode(int node_id_){
nodePtr n = new Node;
n->next = NULL;
n->node_id = node_id_;
if(head!=NULL)
{
current = head;
while(current->next != NULL)
{
current = current ->next;
}
current->next = n;
}
else
{
head = n;
}
}
void nodelist::deleteNode(int del_node){
nodePtr delPtr = NULL;
temp = head;
current = head;
while(current!=NULL&¤t->node_id!=del_node){
temp = current;
current = current->next;
}
if (current == NULL)
{
cout << del_node<<" does not exist"<<endl;
delete delPtr;
}
else
{
delPtr = current;
current = current->next;
temp->next= current;
delete delPtr;
cout << del_node<< " has been deleted"<<endl;
}
}
void nodelist::print(){
current = head;
while(current != NULL){
cout << current->node_id<<endl;
current = current ->next;
}
#包括
#包括“NodeList.h”
使用名称空间std;
节点列表::节点列表(){
head=NULL;
电流=零;
温度=零;
}
void nodelist::addNode(int node\u id\ux){
nodePtr n=新节点;
n->next=NULL;
n->node\u id=node\u id;
if(head!=NULL)
{
电流=水头;
while(当前->下一步!=NULL)
{
当前=当前->下一步;
}
当前->下一步=n;
}
其他的
{
水头=n;
}
}
void nodelist::deleteNode(int del_节点){
nodePtr delPtr=NULL;
温度=水头;
电流=水头;
while(当前!=NULL&¤t->node\u id!=del\u node){
温度=电流;
当前=当前->下一步;
}
如果(当前==NULL)
{
声明指针是不够的,您需要使用new操作符来实例化它们指向的节点列表
n1和n2没有指向任何东西,这就是它崩溃的原因
nodelist *n1;
nodelist *n2;
n1->addNode(node1);
n2->addNode(node2);
声明指针是不够的,您需要使用新操作符来实例化它们指向的节点列表
n1和n2没有指向任何东西,这就是它崩溃的原因
nodelist *n1;
nodelist *n2;
n1->addNode(node1);
n2->addNode(node2);
在不了解如何声明/实现链表类的情况下,很难为您的整体问题提供一个潜在的解决方案。但崩溃是由您试图访问随机内存块并将其视为节点列表
对象(例如,未定义的行为)造成的
在不了解如何声明/实现链表类的情况下,很难为您的整体问题提供一个潜在的解决方案。但崩溃是由于您试图访问随机内存块并将其视为节点列表
对象(例如,未定义的行为)而导致的.但是在我的节点列表文件中,我的addNode函数创建了新节点。不,你需要创建节点列表。只要你尝试调用n1->addNode,它就会崩溃,因为n1不指向任何内容。但是在我的节点列表文件中,我的addNode函数创建了新节点。不,你需要创建节点列表。只要你尝试调用n1->addNode,它就会崩溃我将崩溃,因为n1不指向任何内容。我已编辑了我的问题!谢谢,但现在我有一个新错误:(现在您有两个内存泄漏,并且似乎违反了分离关注点的原则。您应该将列表结构与迭代器结构分离。我已编辑了我的问题!谢谢,但现在我有一个新错误:(现在您有几个内存泄漏,并且您似乎违反了关注点分离原则。您应该将列表构造与迭代器构造分离。