【发布时间】:2015-01-04 17:34:34
【问题描述】:
我正在做一个项目,想知道是否可以创建一个链表的链表。 我想在 C 中创建一个新类型 person,其中每个 person 都可以有 kids。 kids 是 person 的列表,并且每个 person 都有 parents 他们也是 person em>s.所以我正在考虑使用结构和链表来做到这一点。
#include <stdio.h>
struct person {
unsigned int id; //identity,unique for every person
char* name;
struct person **father;
struct person **mother;
struct kids **kids;
}
struct kids {
struct person **kid;
struct kids **next_kid;
};
提前感谢您的宝贵时间。
【问题讨论】:
-
是的,你可以。您还有其他问题吗?
-
我不确定你为什么要声明指针指针 (
person **father)。person *father可能会。哦,正如@Quentin 所说的“当然可以,伙计”。其余的等等,无止境。欢迎来到复杂数据结构的奇妙世界。 -
只需在结构中使用单个指针。对于函数代码,您可能希望使用指向结构指针的指针,这样就不需要对头指针和下一个指针进行特殊处理。例如,要初始化: node **ppnode = &head;推进:ppnode = &((*ppnode)->next); .
-
非常感谢您的回复。我不太确定。@DanAllen 我做双指针的原因是,当我更改或初始化某人的父母时,我不必返回我所有的东西函数将是 void 而不是类型 person( void define_father(person p,person Father); 而不是 'p->father=define_father(person p,person Father);' )
标签: c linked-list