C++ 如何遍历二维列表?

C++ 如何遍历二维列表?,c++,list,C++,List,我的任务是“在电台上模拟音乐机器”。我必须使用列表。所以我决定使用二维列表,这样就可以更快地找到所需的曲目。结构是这样的:请原谅我的绘画技巧。 结构声明是这样的 struct TrackNode { int PlayLimit; std::string TrackName; TrackNode *NextTrack; }; struct ArtistNode { std::string ArtistName; ArtistNode *NextArtist

我的任务是“在电台上模拟音乐机器”。我必须使用列表。所以我决定使用二维列表,这样就可以更快地找到所需的曲目。结构是这样的:请原谅我的绘画技巧。 结构声明是这样的

struct TrackNode
{ 
   int PlayLimit;
   std::string TrackName;
   TrackNode *NextTrack; 

};

struct ArtistNode
{
    std::string ArtistName;
    ArtistNode *NextArtist;
    TrackNode *NextTrack; 
};
我不明白的是如何遍历这样的列表。存储在艺术家节点中时,如何使用曲目名称显示艺术家名称?如何知道我何时到达下一位艺术家? 我不需要代码,只需要基本原则。请不要告诉我使用其他东西,因为我必须使用多维列表。

大致如下:

ArtistNode* first_artist;
for( ArtistNode* artist = first_artist; artist != 0; artist = artist->NextArtist ){
    for( TrackNode* track = artist->NextTrack; track != 0; track = track->NextTrack ){
        cout << artist->ArtistName << ' ' << track->TrackName << endl;
    }
}
ArtistNode*第一位艺术家;
对于(ArtistNode*artist=第一个艺术家;艺术家!=0;艺术家=艺术家->下一个艺术家){
对于(TrackNode*track=artist->NextTrack;track!=0;track=track->NextTrack){

ArtistName对一个
ArtistNode
有一个
NextStart
和一个
NextTrack
意味着什么?数据结构对我来说也没有意义。你能详细说明你为什么要这样做吗?什么是“音乐机器”您试图解决的任务是什么?@OliCharlesworth
ArtistNode
链接列表中的每个节点(由
NextArtist
链接)有一个
TrackNode
的链接列表。图片缺少
ArtistNode
对象之间的直接链接线,并且曲目列表的最后一个
TrackNode
不应该有到下一个
ArtistNode
的链接(至少这是我的看法,ymmv)@WhozCraig所以最后一首歌不应该链接到下一位艺术家?所以我只能从艺术家节点访问下一位艺术家?没错。你是在试图建立一个剧作家吗?如果是这样,一个二级数据结构可能会满足你的需要。你在这里展示的更像是一个“库”列表。播放列表将是指向“库”中节点的指针列表。不需要太长的距离就可以看出这可能是您正在尝试做的。如果有帮助,最后一句话也可能是:“您需要一个循环来遍历艺术家列表,对于每个艺术家,需要一个嵌套的循环来遍历该艺术家的轨迹。”谢谢,比我的好多了,抄袭:-)