【问题标题】:Linked List Prints NULL - C++链表打印 NULL - C++
【发布时间】:2016-06-18 20:33:02
【问题描述】:

所以,我正在处理这个链表作业,非常感谢打印出链表元素的一些帮助。 到目前为止,我已经使用一个数组来定义链表的值,但是每当我尝试使用单独的打印函数打印头部值时,它总是出现 NULL。现在我认为这可能与一些全球与本地问题有关,但我不确定。如果是范围问题,那么将不胜感激有关如何全局定义链表值的一些建议。

下面是我的打印功能和构建功能的代码。我现在要做的就是从 print 函数中打印出 build 函数中定义的 head 值。 head 值似乎通过 build 函数保持一致,但是一旦我执行 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;
}

【问题讨论】:

  • 您应该在运算符周围放置空格,例如"cout &lt;&lt; current-&gt;cityName &lt;&lt; " -&gt; ";
  • 当您使用调试器并单步执行每个语句时,哪个语句导致了问题?
  • 一切都在运行,但我的 printNetwork() 函数在应该输出“Los Angeles”时打印 NULL

标签: c++ printing linked-list


【解决方案1】:

我生锈的水晶球说你的班级有一个名叫head的成员。但是,您不会在CommunicationNetwork::buildNetwork 中接触此成员。相反,您创建了一个全新的局部变量

City *head = new City;

在整个函数中使用它,并在函数结束时放弃它。为了使用您的班级成员,请将以上内容替换为

head = new City;

如果您的班级有一个名为 tail 的成员,这也适用于它。

当我们在这里的时候,在这个片段中

City *tmp2 = new City;
tmp2 = head;

您分配了一个City 对象并立即忘记它,从而造成内存泄漏。

【讨论】:

  • 哦,我不敢相信我间隔了那个!非常感谢。我想我只是一直在忽略头部是在我的函数中定义的事实。非常感谢。
猜你喜欢
  • 2016-01-21
  • 2021-03-07
  • 2016-06-15
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多