我已經創建了兩個名爲nodelist.h和nodelist.cpp的文件,並且基本上它們內部的函數包含基本鏈接列表函數(例如addNode,printNode等)。我已經創造了另一個源文件中使用該類創建像這樣的功能:在C++中調用鏈接列表函數
#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;
}
注意這個函數是不是在主,它是由主叫另一個源文件。我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;
}
}
編輯:所以現在它的工作原理,當我創建類型節點列表的一個新的對象,然而,當我在值傳遞的節點1和節點我得到一個不對應任何一個節點的連續循環。但是,這工作,如果我在main()中這樣做。
但在我的節點列表文件中,我的addNode函數創建了新節點。 – Andy
不,您需要創建節點列表。只要您嘗試調用n1-> addNode,它就會崩潰,因爲n1指向無。 – NapoleonBlownapart