读书人

一个树型结构存储的有关问题

发布时间: 2012-01-28 22:06:13 作者: rapoo

一个树型结构存储的问题
一个树型结构存储的问题。
现有全国土地分类体系如下所示:
等级名称 编码
1耕地 01
2水田 011
2水浇地 012
2旱 地 013
1园地 02
2果 园 021
...........

本人使用的是vc,预先已经定义了一个land类,来描述一个地类。如下:
#define DEF_EXPORT _declspec(dllexport)
#define MAX 100


class DEF_EXPORT Land
{
public:
Land();
virtual ~Land();
void ReadSystem(const char *lpszPathName); //读分类体系
void WriteSystem(const char *lpszPathName); //写分类体系
void AddClass(const char *lpszPathName1,const char *lpszPathName2);
void DeleteClass(int i);
void ChangeColor( );

public:

char level[5]; //等级
char name[30]; //名称
char id[5]; //编码
char description[500]; //描述

struct COLORDEF { //颜色
byte plus;
byte r;
byte g;
byte b;
};


};

DEF_EXPORT Land land[MAX];

本人想实现整个土地分类体系的树型(就用一般的树就行)存储(如果编码中三位数字的前两位相同,等级为1的类就是等级为2的类的父类,)

,该怎么办呢?清高手帮忙吗!(本人是新手,麻烦说详细点。)

[解决办法]
class DEF_EXPORT Land
{
public:
Land();
virtual ~Land();
void ReadSystem(const char *lpszPathName); //读分类体系
void WriteSystem(const char *lpszPathName); //写分类体系
void AddClass(const char *lpszPathName1,const char *lpszPathName2);
void DeleteClass(int i);
void ChangeColor( );

public:

char level[5]; // 自己
char name[30]; // 名称
char levelParent[5]; // 父类
char id[5]; //编码
char description[500]; //描述

struct COLORDEF { //颜色
byte plus;
byte r;
byte g;
byte b;
};

};
使用CPtrList来存储这个land;
遍历的时候,首先取出父类,如果父类为空,则就是需要创建的根。
然后一层一层遍历

读书人网 >VC/MFC

热点推荐