- 论坛徽章:
- 0
|
不过我的问题是:现在结构(struct)相同的节点,他们有不同的父节点,在不同父节点下他们的ID都是1,2,3,.....
如
s: s1 <-> s2
/ / \ / / \ \
f: 1<-> 2<-> 3 1<-> 2<->3<->4
struct ss
{
struct ff *f;
id;
struct ....
} s1,s2;
struct ff
{
struct ss m_pS;
id;
.....
};
f层每个需要时才建立.
即我不知道每个s下面有多少个f!
如果s层作为一个数组存起来,f层也用令一数组存,则出现ID相同的情况啊!
不同父节点下的相同结构的子节点应该使用相同的全局数组,ID当然也应该统一编码才对。
你这个其实不是真正的树结构。但同样可以实现:
定义ff层数组:struct ff ffff[many];
定义ss层数组:struct ss ssss[many-many];
遍历ff:
int ff_index, ss_index;
for_each_ff (ff) {
ffff[ff_index] = ff;
ff->ff_ID = ff_index;
ff_index++;
ff->fist_ss_ID = ss_index;
for_each_sub_ss(ss) {
ssss[ss_index] = ss;
ss->ss_ID = ss_index;
ss->ff_ID = ff->ff_ID;
ss_index++;
}
ff->last_ss_ID = ss_index - 1;
}
然后将ffff ssss存档。load时,先载入ffff ssss,再依据ID重建结构。
只是粗略的想法…… |
|