所以,我正在处理这个链表分配,并且非常感谢有关打印出链表的元素的一些帮助。 到目前为止,我已经使用数组来定义链表的值,但每当我尝试使用单独的打印函数打印头值时,它总是出现NULL。现在我认为这可能与一些全球性和地方性问题有关,但我不确定。如果是范围问题,那么关于如何全局定义链表值的一些建议将非常受欢迎。
下面是我的打印功能和构建功能的代码。我现在想要完成的就是从print函数中打印出构建函数中定义的头值。头部值似乎通过构建函数是一致的,但是一旦执行print函数,它就变为NULL。 有什么想法吗?
void CommunicationNetwork::buildNetwork(){
std::string a[10] = {"Los Angeles","Phoenix", "Denver", "Dallas","St. Louis", "Chicago", "Atlanta", "Washington, D.C.", "New York", "Boston"};
City *head = new City;
head ->cityName=a[0];
head ->next = NULL;
City *current = head;
int i =1;
while(i<10){
City *tmp = new City;
tmp ->cityName = a[i];
tmp ->next = NULL;
current ->next = tmp;
current = current->next;
i++;
}
City *tail = current;
City *tmp2 = new City;
tmp2 = head;
current = tmp2;
//cout<<"head = "<<head->cityName<<endl;
while(current != NULL){
cout<<current->cityName<<" -> ";
current = current->next;
}
if(current == NULL){
cout<<"NULL"<<endl;
}
cout<<head->cityName<<endl;
}
void CommunicationNetwork::printNetwork(){
cout<<"===Current Path==="<<endl;
cout<<head->cityName<<endl;
cout<<"=================="<<endl;
}
答案 0 :(得分:0)
我生锈的水晶球说你的班级有一个名为head
的成员。但是,您没有在CommunicationNetwork::buildNetwork
中触及此成员。相反,您创建一个全新的局部变量
City *head = new City;
在整个函数中使用它,并在thge函数结束时放弃它。要使用您的类成员,请将上面的内容替换为
head = new City;
如果您的班级有一个名为tail
的成员,这也适用于此。
虽然我们正在使用此片段
City *tmp2 = new City;
tmp2 = head;
你分配一个City
对象并立即忘记它,造成内存泄漏。