代码有些冗长,请见谅
#include <string>
struct Artist;
struct sNode;
struct Song;
//Artist 信息
struct Artist
{
std::string name; //名称
Artist* next; //下一个 artist
Artist* head; //首项 artist
sNode* tail; //对应 sNode
//--构造函数
//首项
Artist(std::string name, sNode* tail)
:
name(name),
tail(tail),
head(this)
{}
//其余
Artist(Artist* head, Artist* prev, std::string name, sNode* tail)
:
name(name),
tail(tail),
head(head)
{
prev->next = this;
}
};
//Snode 信息
struct sNode
{
sNode* next; //下一个 sNode
sNode* prev; //上一个 sNode
Song* song; //对应 Song
//--构造函数
sNode(sNode* next, sNode* prev, Song* song)
:
next(next),
prev(prev),
song(song)
{}
};
//Song 信息
struct Song
{
Artist* artist; //对应 Artist
std::string title; //标题
std::string path; //文件路径
int index; //索引
//--构造函数
Song(Artist* artist, std::string title, std::string path, int index)
:
artist(artist),
title(title),
path(path),
index(index)
{}
};