C++ 消除链接列表中的额外调用

C++ 消除链接列表中的额外调用,c++,linked-list,C++,Linked List,我目前正在实现一个链表(在我休息的时候!),我发现我的函数结构如下: void traverseList(node *head){ if(head != 0){ while(head->next !=0){ cout << head->data << endl; head = head->next; } //one extra for the node at the end cout &l

我目前正在实现一个链表(在我休息的时候!),我发现我的函数结构如下:

void traverseList(node *head){
if(head != 0){
    while(head->next !=0){
        cout << head->data << endl;
        head = head->next;
    }

    //one extra for the node at the end
    cout << head->data << endl;
}
}
void遍历列表(节点*头){
如果(头!=0){
while(head->next!=0){
下一步是收集数据;
}
//为末端的节点额外添加一个
不能改变这一点:

if(iterator != 0){
    while(iterator->next !=0){
        cout << iterator->data << endl;
        iterator = iterator->next;
    }

    //one extra for the node at the end
    cout << iterator->data << endl;
}
if(迭代器!=0){
while(迭代器->下一步!=0){
下一步是收集数据;
}
//为末端的节点额外添加一个

cout data您的功能可以大大简化为:

void traverseList(node *head)
{
    for(node * iterator = head; iterator; iterator = iterator->next)
    {
        cout << iterator->data << endl;
    }
}
void遍历列表(节点*头)
{
对于(节点*iterator=head;iterator;iterator=iterator->next)
{

不能数据那
新节点
到底在那里做什么?@Tom正如Mike注意到的,你为什么在这里创建一个新节点对象?你没有必要创建内存泄漏。你是对的-我不需要。
void traverseList(node *head)
{
    for(node * iterator = head; iterator; iterator = iterator->next)
    {
        cout << iterator->data << endl;
    }
}