我的节点类目前有这个代码,它存储两个名称、一个 ID 号,并具有 Next 能力:
class Node{
public:
char LastName[20] ;
char FirstName[20] ;
int IDnumber ;
Node *Next ;
Node();
void printNode();
};
这是我用来从键盘初始化节点变量的构造函数:
Node::Node(){
cout << "Enter ID number: " << endl;
cin >> IDnumber;
cout << "Enter last name: " << endl;
cin >> LastName;
cout << "Enter first name: " << endl;
cin >> FirstName;
Next=NULL;
}
void Node::printNode(){
cout << "ID number: " << IDnumber << endl;
cout << "Last name: " << LastName <<endl;
cout << "First name: " << FirstName << endl;
}
我遇到的问题是,每当我稍后在代码中调用 printNode() 函数时,我的代码都无法执行 printNode() 函数的第一行。(未处理的异常)当我尝试使用单独的链表类调用 node->Next 时,我也无法执行此代码。这让我相信我没有正确构建节点。关于我的代码中可能有什么问题的任何想法?
链表是一个单独的类,它使用我在上面发布的节点类。
class LinkedList{
private:
Node* list;
Node* createNode();
Node* searchLocation(int);
public:
LinkedList();
~LinkedList();
void InsertNode();
void SearchNode();
void PrintList();
void DeleteNode(int);
};
LinkedList::LinkedList(){
Node* list = NULL;
}
Node* LinkedList::createNode(){
Node *NewNode = new Node();
return NewNode;
}
void LinkedList::InsertNode(){
Node* insert = createNode();
if (list == NULL){
list = insert;}}
void LinkedList::PrintList(){
Node* temp = list;
while (temp != NULL){
temp->printNode();
temp = temp->Next;
}
}
我的 LinkedList 类的 PrintList() 函数在 list->printNode() 时失败(在 cout << IDnumber 行有一个中断)并且在 list = list->Next 行也失败了。
int main(){
int num = 0;
LinkedList list;
int menu=0;
while(menu != 5){
cout << endl << "Choose a menu option." <<endl
<< "1. Insert node " << endl << "2. Delete node " << endl
<< "3. Print list" << endl << "4. Search a node & print info" << endl
<< "5. Quit program " << endl;
cin >> menu;
menu = validate(menu);
switch(menu){
case 1:
list.InsertNode();
break;
case 3:
list.PrintList();
break;
}}
return 0;
}