c++ - 为什么我不能打印多个字符串?

标签 c++ linked-list

我可以打印一个字符串。但是当我尝试添加两个字符串时它只打印第一个字符串? curr 是链表的开头。如果我添加一个国家并告诉程序打印它会打印带有信息的国家。但是,如果我添加两个国家,它只会打印第一个国家。

 void LinkedList::printList()
 {
    curr = head;
    while (curr)
    {
        cout << "Country Name: " << curr->name << ", " << "Gold: "  << curr->
        gold << ", " << "Silver: " << curr->silver << ", " << "Bronze: " << curr->bronze << "\n";
        curr = curr->next;
    }
}

bool LinkedList::addCountry(string newName, int gold, int silver, int bronze) {
    if (head == NULL)// Adding first element
    {
        head = new struct Country;
        if (head == NULL) return false; // could not create head linked list country
        head->name = newName;
        head->gold = gold;
        head->silver = silver;
        head->bronze = bronze;
        head->next = NULL;
        return true;
    } else {
        curr = head;
        while (curr) {
            curr = curr->next;
        }
        curr = new struct Country;
        if (curr == NULL)
            return false;
        curr->name = newName;
        curr->gold = gold;
        curr->silver = silver;
        curr->bronze = bronze;
        curr->next = NULL;
        return true;
    }
}

最佳答案

@Barmak Shemirani 是正确的。我认为如果你有一个尾部成员会更好:

  class LindedList
    {
    public:
        LindedList()
        {
            tail=head=curr=NULL;
        };
        Country* head;
        Country* curr;
        Country* tail;
     void printList()
     {
        curr = head;
        while (curr)
        {
            cout << "Country Name: " << curr->name << ", " << "Gold: "  << curr->
            gold << ", " << "Silver: " << curr->silver << ", " << "Bronze: " << curr->bronze << "\n";
            curr = curr->next;
        }
    };

    bool addCountry(string newName, int gold, int silver, int bronze) 
    {
        curr = new Country;
        if (curr == NULL)
                return false;
        curr->name = newName;
        curr->gold = gold;
        curr->silver = silver;
        curr->bronze = bronze;
        curr->next = NULL;
        if (head == NULL)
        {
            head = curr;
            tail=curr;

        } else 
        {
            tail->next=curr;
            tail=curr;

        }
        return true;
    };
    };

关于c++ - 为什么我不能打印多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187799/

相关文章:

C:从链表中检索 char 值

python - 为什么此链接列表代码在 HackerRank 中显示错误?

c - 将项目添加到链接列表,不允许重复

c++ - 隐式链接 DLL 问题

c++ - 数字如 0.999999 四舍五入为 1

c++ - KDTree 的模板类声明

c++ - opencv3.00中Facerecognizer类的getMat()的替代方法是什么?

c# - 如何使用循环链表解决 Josephus Elimination

java - "LinkedList is not generic"错误Java

c++ - 下载前如何获取文件大小