C++ 实现嵌套链表(列表列表列表)

C++ 实现嵌套链表(列表列表列表),c++,C++,我的链接列表是关于一家音像店的。 我应该做一个视频详细信息列表(我知道这部分)和客户详细信息列表。 现在,客户列表(第二个节点类型)是我的问题所在 我必须显示客户的姓名、acc编号等以及该客户签入和签出的视频(删除视频并将其插入客户列表) 所以我的疑问是,我如何删除和插入一个人名字下的视频 客户名单上有很多不同的客户,他们有不同的姓名、acc号码和租用的视频 一位客户john租了2到4个不同的视频,还租了一些视频 现在,我如何证明只有John租用了这些视频(也就是说,我必须仅以他的名义插入视频,

我的链接列表是关于一家音像店的。 我应该做一个视频详细信息列表(我知道这部分)和客户详细信息列表。 现在,客户列表(第二个节点类型)是我的问题所在

我必须显示客户的姓名、acc编号等以及该客户签入和签出的视频(删除视频并将其插入客户列表) 所以我的疑问是,我如何删除和插入一个人名字下的视频

客户名单上有很多不同的客户,他们有不同的姓名、acc号码和租用的视频

一位客户john租了2到4个不同的视频,还租了一些视频

现在,我如何证明只有John租用了这些视频(也就是说,我必须仅以他的名义插入视频,而不是以任何其他客户的名义插入视频)


我希望人们现在明白了……我想知道如何做到这一点?

将第二个列表的标题放在第一个列表的内容结构中。不是全局变量。

在Customer类中保留
视频
指针列表

一旦某个视频被客户租出去,就在我上面提到的列表中添加指向该视频的指针。
也可以在视频类中保留一个单独的指针“代码>客户>代码>,这样你可以从视频列表中查看谁租用它。

< P>如果我理解正确,这是一个设计问题,与C++中的链接列表无关。

对于其余的实现,我假设如下:

  • N
    视频

  • 当前是
    K
    租赁,其中
    0客户节点需要自己的视频列表。为此,请添加指向视频节点的指针作为客户节点数据成员

    现在编写一个递归过程,该过程使用您想要使用的搜索词和指向客户节点的指针。如果找到客户节点,它应该返回该节点。i、 e:

    // New method to find the right node.
    CustomerNode* find_customer( string name, CustomerNode* p_node ) {
    
    向客户节点添加一个成员方法,该方法走到该客户的视频列表的末尾,并将新视频放在末尾(或者,将新视频作为标题并将当前列表附加到其上)

    然后,您可以在代码中这样使用它:

       CustomerNode* p_john = find_customer( "John", customers_head );
       if ( p_john != NULL )
          p_john->add_video( p_new_video );
    

    什么是全局变量?在我第一个列表的内容中,你是什么意思?@Ovas:这是你上过的第一堂编程课吗?如果是,你的教授走得太快了。如果没有,,你怎么会不知道全局变量是什么?这几乎是因为教授的方法太快了。但我不能就此放弃。我想收集我能得到的任何信息,所以我来到这里。我想你的意思是一个全局变量是“节点类型”?现在你把细节和概念混在一起了。你的客户名单的头可能是一个全局变量变量,类似于
    customernode*firstcustomer。视频列表的标题应该是customer listnode结构的成员,类似于
    struct customernode{customernode*next;videonode*firstvideo;}因为这是一个C++项目,也许你不必从头开始实现链表。你可以使用。但只有你知道,如果你的课程可能真的意味着你要教实现链表,如果是这样的话,那么就忽略我之前的评论哇…这看起来很神奇和复杂,甚至对我来说…嗯,感谢所有的帮助,我会看到我能做什么,但再次非常感谢!到底什么是#define MAX#u RENTALS 100的意思…看起来很熟悉…这是来自Oracle的吗?SQL?这对C++有作用吗?是的,它是C++。这是一个C型常量定义。更改值以满足您的需要。当你学习更高级的编程课程时,你的老师会告诉你如何避免提前决定你需要多少内存。它只是用这个来避免一次引入太多的概念。@Yukis:出于好奇,您实现了3个解决方案中的哪一个?
    
    #define MAX_RENTALS 100
    struct Rental {
        Video * video;
        Customer * customer;
    };
    Rental rentals[MAX_RENTALS];
    int rental_count = 0;
    
    // New method to find the right node.
    CustomerNode* find_customer( string name, CustomerNode* p_node ) {
    
    // New method to add a video to the customer
    void CustomerNode::add_video( VideoNode* p_video ) {
    
       CustomerNode* p_john = find_customer( "John", customers_head );
       if ( p_john != NULL )
          p_john->add_video( p_new_video );