头都大了了 2022-05-07 11:51 采纳率: 85.7%
浏览 84
已结题

【C语言】数据结构,基本结构体设计问题

请问一以下这个结构应该怎么利用结构体以及指针完成呢?(可以提供一下注释吗,谢谢!)
补充一下,想使用二重链表来对音乐做一个排列,请问如何实现呢?

img

typedef struct _artist artist;
typedef struct _artist{
    char name[20];
}artist;
typedef struct _song song;
typedef struct _song{
    char name[30];
    char singer[30];
    song *a;
}song;
typedef struct _listNode *listPointer;
typedef struct _listNode{
    song data;
    listPointer link;
}ListNode;

我只做到这里,后面结构体之间的指针不知道该怎么弄

  • 写回答

4条回答 默认 最新

  • wind_2067 2022-05-07 13:32
    关注
    获得0.70元问题酬金

    代码有些冗长,请见谅

    
    #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)
        {}
    };
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 修改了问题 5月7日
  • 修改了问题 5月7日
  • 创建了问题 5月7日