📄 mtree.cpp
字号:
// Mtree.cpp: implementation of the Mtree class.
//
//////////////////////////////////////////////////////////////////////
#include "Mtree.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
template<class Type>
Mnode<Type>::Mnode(int m)
{
n = 0;
parent = NULL;
key = new Type [m+1];
ptr = new Mnode<Type>* [m+1];
num = new int [m+1];
if (!key || !ptr || !num)
{
cout<<"error on Mnode constructing"<<endl;
exit(1);
}
for (int i = 0; i<m+1; i++)
ptr[i] = NULL;
}
template<class Type>
Mnode<Type>::~Mnode()
{
delete [] key;
delete [] *ptr;
delete [] num;
}
////////////////////////////////////////////////////////////////////////////
template<class Type>
Mtree<Type>::Mtree()
{
cout<<"输入m:\n";
cin>>m;
root = new Mnode<Type>(m);
if (!root)
{
cout<<"error on Mtree constructing"<<endl;
exit(1);
}
cout<<"输入MAXKEY:\n";
cin>>MAXKEY;
}
template<class Type>
Mtree<Type>::~Mtree()
{
};
template<class Type>
Triple<Type>& Mtree<Type>::Search (const Type& x)
{
Triple<Type> result; //记录搜索结果三元组
int i=0;
Mnode<Type> * p = root , * q = NULL;
while( p != NULL) //从根开始检测
{
i = 0;
p-> key[( p ->n) +1 ] = MAXKEY;
while ( p ->key [i+1] < x) i ++; //结点内搜索
if ( p-> key[i+1] == x) //搜索成功
{
result.r = p ; result.i = i+1; result.tag = 0;
return result;
}
q = p ; p = p-> ptr[i];
}
result. r = q ; result.i = i + 1 ; result.tag = 1;
return result;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -