不知道该怎么做这个设计.上次做设计.做的不好.被骂死了.这次设计不能再失手了.我把内容大概写在这里.CSDN的前辈如果可以帮忙的话.请给我一点帮助. 是这样:(id,name)两个数据项用index构成的3456树.(请前辈指教.这题目的这个内容是个什么意思我都不是很明白) 
完成以下这些内容: 
1.cre data.txt 
->(id,name)两个数据项存储的data.txt生成创建. 
2.input 
->树循环输出(id,name)两个数据. 
->以id为增序输出 
3.insert 
->可以增加新的(id,name)数据项 
4.delete id 
->输入id删除对应的项 
5.search id 
->输入id查找对应的项 
6.tree information 
->1.树的深度. 
2.树的全部结点数. 
3.3结点的数.4结点的数.5结点的数.6结点的数 各个输出 
7.exit 
->输入-1退出 注意: id=long.    name=char[20] 
输入的(id,name)两个数据项的对小于一万数量有好的建议发邮件也好  [email protected]

解决方案 »

  1.   

    这个大概就是让你做个树的数据结构出来。树要支持3~6叉。并提供查询和添加删除的操作。
    如果自己设计估计会比较复杂。感觉用图来处理会比较方便,很多操作都能够在图上实现。有很多库都有比较成熟图的数据结构和操作。比如boost中似乎就有对图的支持。
    原来封装过一个dglib的dglGraph_s。基本能够实现节点添加删除,节点遍历,出度入度查询等等。但是比较复杂,你这里不适用。
    很久没怎么搞算法设计了,仅供参考吧~
      

  2.   

    我是楼主: 
    TO:yebeans 先谢谢您.这个题目是让用3.4.5.6树型结构来设计.图的想法我就没有.....不过十分感谢您.谢谢.
      

  3.   

    不太明白这个“3456树”,新的数据往哪里insert?
      

  4.   

    用数据库来存储节点以及节点父子关系,SQL执行查询和修改;
    用XML来存储信息,XPATH访问节点。
    我也不明白3456树是指什么。
      

  5.   

    是不是应该叫2-3-4-5-6树,3节点有两个数据,6节点有5个数据?
    是不是数据从根节点开始插入,每个节点超过5个数据时拆分?
    用ID来识别数据,ID由用户输入,但要求唯一?
    第2点应该是output吧?
      

  6.   

    是不是这样叫,其实我也觉得是这样.没有2这个度.怎么构成3 4 5-6树?"是不是数据从根节点开始插入,每个节点超过5个数据时拆分? 
    用ID来识别数据,ID由用户输入,但要求唯一?"
    是这样.从头结点也可以.可是需要遍历的结点太多.一般是从根结点开始.
     
    "第2点应该是output吧?"
    我的指导书上写的是output.如果我们按自己的理解.只要有一个程序可以正常的运行.按自己的理解也可以吧.我是这样想的.
      

  7.   

    typedef struct _DATA // 保存数据信息,插入数据时用new分配
    {
    long Id;
    char Name[20];
    _DATA* Last; // 指向上一个相临的数据,不存在则为NULL
    _DATA* Next; // 指向下一个相临的数据,不存在则为NULL
    } DATA, *PDATA;typedef struct _NODE // 保存节点信息,建立节点时用new分配
    {
    PDATA Data[5]; // 分别指向5个数据,按ID大小排序,未使用的元素用NULL
    _NODE* Parent; // 指向父节点,根节点为NULL
    _NODE* Children[6]; // 分别指向6个子节点,未使用的元素用NULL
    unsigned DataCount; // 数据个数
    unsigned ChildrenCount; // 子节点数
    } NODE, *PNODE;
    从根节点开始插入数据,节点中数据超过5个时增加子节点。插入数据时,从根节点开始,如果节点数据个数小于5,则将数据插入该节点,并各个数据按ID大小排序,如果数据个数等于5,则根据ID值确定新的数据应该插入哪个子树,如新数据ID<=Data[0]->Id,则查找Children[0],如新数据Data[0]->Id<=ID<=Data[1]->Id,则查找Children[1],……,若子节点不存在则增加子节点,否则在子树中继续查找。