Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中调用链表函数+;_C++_Linked List - Fatal编程技术网

C++ 在C+中调用链表函数+;

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;

我创建了两个名为nodelist.h和nodelist.cpp的文件,其中的函数基本上包含基本的链表函数,例如(例如addNode、printNode…等)。之后,我创建了另一个源文件,以利用该类中创建的函数,如下所示:

#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&&current->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不指向任何内容。我已编辑了我的问题!谢谢,但现在我有一个新错误:(现在您有两个内存泄漏,并且似乎违反了分离关注点的原则。您应该将列表结构与迭代器结构分离。我已编辑了我的问题!谢谢,但现在我有一个新错误:(现在您有几个内存泄漏,并且您似乎违反了关注点分离原则。您应该将列表构造与迭代器构造分离。