首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-01-28 
一个树型结构存储的问题一个树型结构存储的问题。现有全国土地分类体系如下所示:等级名称编码1耕地012水田0

一个树型结构存储的问题
一个树型结构存储的问题。
现有全国土地分类体系如下所示:
  等级名称                                 编码
  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;
遍历的时候,首先取出父类,如果父类为空,则就是需要创建的根。
然后一层一层遍历

热点排行