我正在尝试设计一个使用单链表和堆栈操作的数据结构。我明白这个概念。这就像你有一个房间,你正在堆叠/连接到那个房间的人。房间也相连。但是,我找不到一些这方面的例子/参考,我只能找到自引用结构的例子。
你知道一些很好的参考/网站吗?
struct room
{
int roomnumber;
struct room *link;
};
struct person
{
int personnumber;
struct person *next;
struct room *link;
};
答案 0 :(得分:4)
首先,在设计数据结构时,您应该记住要对数据进行的操作。
现在我看到你组织了房间和人员清单。为了连接有房间的人,你可以在这样的结构中定义person.link
,你可以很容易地理解这个人的位置,但是为了找到在房间里的人你会做大工作(通过所有人来看看他们在哪里) 。因此,请考虑您的计划将对房间和人员做些什么,即哪些操作将是最常见的。
修改强>
也许可能的替代方案是:
struct room
{
int roomnumber;
struct room * nextRoom;
struct person * personList;
};
struct person
{
int personnumber;
struct person *next;
};
这里的房间里有人(人)的名单,所以在特定的房间很容易找到某人(都找到所有人),但很难确定指定人数的人在哪里搜索
答案 1 :(得分:0)
我的数据结构设计是否正确?
你说你已经将这个人与那个房间联系起来了#34;但我只看到与这个人相关的房间。
如何将此人连接到房间?
向person
添加room
指针。
你知道一些很好的参考/网站吗?
答案 2 :(得分:0)
您的设计似乎不正确。如果人员列表与某个房间相关联,那么拥有struct person *
成员struct room
似乎更为自然,并且不需要struct room *
成员struct person
。如果您需要能够在与某人交谈时确定房间,那么将struct room
保留在struct person
中是有意义的,但这是您设计的权衡(您在浪费有大量内存和冗余信息,似乎你可以随时访问一个你已经知道你正在处理哪个房间的人,但你没有提供足够的信息来做出这个决定。