JAVA版msn(最新)
package process; import java.io.FileNotFoundException; import java.io.IOException; import objectClass.BTreeNode; public class BTree { private String name = "";//此b树的名字 也是存储数据的根目录 private String node_address = "";//查找时找到键值所在文件的名称 private int node_index = 0;//查找是找到键值所在文件内部的下标索引 private int flag = 0;//节点增减是否需要调整的标志 private int tree_level = 0;//b树的层数 private int tree_count = 0;//b树内元素的总个数 private int node_sun = 0;//b树节点的个数 private int level = 0;//当前访问的节点所在处的高度 private String newNode = "";//在节点分割时指向新建的节点的名字(路径) private int insKey = 0;//需要插入的关键值 private Object insObj = null;//需要插入的对象 private int readCount = 0;//统计一次操作(查找、插入、删除)所要读硬盘的次数 private int writeCount = 0;//统计一次操作(查找、插入、删除)所要写硬盘的次数 private String firstNode = "";//此b树的头节点的名字(路径) //临时节点的地址索引、路径和节点的名字 private BTreeNode tempNode = null; private String tempNodePath = null; private String tempNodeName = null; public BTree(){ } /** * 根据输入的关键值查找相应的数据 * 查找成功返回相应的数据对象 * 查找不成功返回null * @throws ClassNotFoundException * @throws IOException * @throws FileNotFoundException * */ public Object search(int key) throws FileNotFoundException, IOException, ClassNotFoundException{ int i , j , m; clearCount(); level = tree_level - 1; tempNodeName = firstNode; while(level >= 0){ tempNodePath = MyObjectIO.getExactPath(name, tempNodeName , MyObjectIO.INDEX); tempNode = (BTreeNode)MyObjectIO.readObject(tempNodePath); readCount++; for(i = 0 , j = tempNode.count-1; i < j ; m=(i+j)/2 , ((key>tempNode.key[m]) ? (i=m+1) : (j=m)) ); if(key == tempNode.key[m]){//找到读出相应的数据记录返回 } if(key > tempNode.key[i]) i++; tempNodeName = tempNode.child[i]; level--; } return null; } /** * 清除记录读写硬盘的计数器 * */ public void clearCount(){ readCount = 0; writeCount = 0; } /** * 返回记录读硬盘的次数 * */ public int getReadCount(){ return readCount; } /** * 返回记录写硬盘的次数 * */ public int getWriteCount(){ return writeCount; } }
- 1
- 2
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip
评论1