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