链表输出崩溃
Linked List output crash
程序在输出链表内容时挂起。我不能更改头文件,只能更改cpp文件。
playlist.h:
class PlayList {
private:
struct SongNode {
Song data;
SongNode* next;
SongNode (const Song& s, SongNode* nxt = 0)
: data(s), next(nxt)
{}
};
friend std::ostream& operator<< (std::ostream& out, const PlayList& s);
SongNode* first; // head of a list of songs, ordered by title, then artist
//Snip...
inline
std::ostream& operator<< (std::ostream& out, const PlayList& pl)
{
for (PlayList::SongNode* current = pl.first; current != 0; current = current->next)
out << current->data << std::endl;
return out;
}
playlist.cpp
using namespace std;
PlayList::PlayList()
: totalTime(0,0,0)
{
}
void PlayList::operator+= (const Song& song)
{
SongNode* newNode = new SongNode(song, first);
first = newNode;
}
当输出列表时,所有应该打印的数据都打印出来了,但是随后程序挂起了
在class PlayList
的构造函数中,需要初始化first
:
public:
PlayList() : first(NULL) {}
否则,在你的operator<<
中,你到达列表的末尾,而不是遇到NULL
,你只是得到一个垃圾指针。
您忘记在构造函数中初始化first
了
相关文章:
- 在C++中实现二叉搜索树,搜索不起作用.尝试打印节点的元素会导致输出崩溃
- 为什么输出错误崩溃
- 程序崩溃,不显示正确的输出
- 为什么在Shell输出中运行的可执行操作到stdout,而不是崩溃时的stderr
- 当程序与符号名称一起崩溃时,输出呼叫堆栈
- ofstream在极其简单的程序(GCC/Code::Blocks)中首次输出时崩溃
- 我的C++程序在尝试输出从文件中读取的数据时崩溃
- 尝试拆分循环链表.显示输出但崩溃.在 IDEone 中显示运行时错误
- 提出/输出文件,调用案例1之后的程序崩溃
- 简单程序没有输出和崩溃.我的解决方案有什么问题
- SDL_ttf和OpenGL正在输出看似随机的垃圾和崩溃
- 输出正确,但每次打印输出后程序崩溃
- 程序在输出后崩溃
- OpenCV Traincascade.exe在没有输出的情况下崩溃
- 文件输出c++时程序崩溃
- 控制台在输出指针数组和C++迭代时崩溃
- 链表输出崩溃
- 创建动态循环队列,元素输出正常,但程序崩溃
- Eclipse,如果程序崩溃,则看不到输出
- 当UDF调用基于另一个UDF的输出时,Excel在用户定义的DLL上崩溃