不知道该怎么做这个设计.上次做设计.做的不好.被骂死了.这次设计不能再失手了.我把内容大概写在这里.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.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]
如果自己设计估计会比较复杂。感觉用图来处理会比较方便,很多操作都能够在图上实现。有很多库都有比较成熟图的数据结构和操作。比如boost中似乎就有对图的支持。
原来封装过一个dglib的dglGraph_s。基本能够实现节点添加删除,节点遍历,出度入度查询等等。但是比较复杂,你这里不适用。
很久没怎么搞算法设计了,仅供参考吧~
TO:yebeans 先谢谢您.这个题目是让用3.4.5.6树型结构来设计.图的想法我就没有.....不过十分感谢您.谢谢.
用XML来存储信息,XPATH访问节点。
我也不明白3456树是指什么。
是不是数据从根节点开始插入,每个节点超过5个数据时拆分?
用ID来识别数据,ID由用户输入,但要求唯一?
第2点应该是output吧?
用ID来识别数据,ID由用户输入,但要求唯一?"
是这样.从头结点也可以.可是需要遍历的结点太多.一般是从根结点开始.
"第2点应该是output吧?"
我的指导书上写的是output.如果我们按自己的理解.只要有一个程序可以正常的运行.按自己的理解也可以吧.我是这样想的.
{
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],……,若子节点不存在则增加子节点,否则在子树中继续查找。