c++ - 为什么我的列表上的迭代失败?

标签 c++ linked-list

我目前正在通过斯坦福开放式 CS106B 学习,我在作业 3 的 B 部分遇到了问题。我得到了一个结构节点,如下所示:

struct Node {
string name;   // my person's name
string killer; // who eliminated me
Node* next;    // ptr to next node
Node(string name, Node* next) {...}
};

我必须实现一个生成节点列表的类。我的构造函数正常工作,但是当我尝试遍历列表时,我的程序崩溃了。我的迭代代码:

void AssassinsList::printGameRing() {
    Node* current;
    for(current = ring; current->next != NULL; current = current->next) {
        cout << endl << "  " << current->name << " is targeting " << current->next->name;
    }
    cout << endl << "  " << current->name << " is targeting " << ring->name << endl;
}

但是,如果我使用 for 循环来循环我知道的特定列表长度所需的次数,它就可以工作。帮助?作业 pdf 的链接:http://www.stanford.edu/class/cs106b/homework/3-tiles-assassins/spec.pdf

谢谢!

最佳答案

我猜你没有将 * next 初始化为 nullptr。因此,对于您在节点之间设置的所有链接都很好,但列表中的最后一个对象指向垃圾。

抱歉,nullptr 是 c++11。如果您的编译器较旧,那么它只是 NULL

关于c++ - 为什么我的列表上的迭代失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486306/

相关文章:

c - K&R 在这里用这个链表做什么?

java - 添加到链表前面

c++ - 错误 C2731 : 'wWinMain' : function cannot be overloaded

c++ - 非静态成员数组初始化的任何解决方法?

c++ - MSVS 12,C++,命令参数不起作用

c++ - 函数声明末尾的 "const"是什么意思?

python - 在一行中重新分配多个变量

c++ - 重载的 std::ostream operator<< 未调用,流获取变量地址而不是对象

c - 当我将它作为指向通过 C 中另一个函数的函数的指针的引用传递时,兼容的指针类型是什么?

C中的纸牌游戏,随机播放链表