#ifndef LyThash_HashData
#define LyThash_HashData 0X4C
#define __HashHead_Struct__ struct
#define __HashHead_TypeSt__ typedef struct
#define __HashHead_UINT__ unsigned int
#define __HashHead_INT__ int
//Hash Error Define
#define __Hash_Not_Found_The_Value__ -1
#define __Hash_irrationality_Value__ -2
#define __Check_Hash_Struct
#define __Check_Hash_BarVal
#define __Check_Hash_FunSet
#define __Data_Is_exist 1
__Check_Hash_Struct struct LhashNode
{
__Check_Hash_BarVal __HashHead_UINT__ In_TableData;//Data*10+Data(exist or unexisr)
__Check_Hash_BarVal __HashHead_UINT__ In_TableMapp;//Map*10+Map(exist or unexisr)
};
__Check_Hash_FunSet __HashHead_UINT__ VisRalhash(__Check_Hash_BarVal __HashHead_UINT__ _X, __Check_Hash_BarVal __HashHead_UINT__ Mov)
{
__Check_Hash_BarVal __HashHead_UINT__ Move = (_X + Mov + 1) % 5;
__Check_Hash_BarVal __HashHead_UINT__ LyT[5] = { 3,7,2,1,_X };
return _X * 10 + LyT[Move] * (_X >> 1);
}
__Check_Hash_FunSet void Insert_Hash(LhashNode* _T, __Check_Hash_BarVal __HashHead_UINT__ Val, __Check_Hash_BarVal __HashHead_UINT__ Loc, __Check_Hash_BarVal __HashHead_UINT__ Mov)
{
__Check_Hash_BarVal __HashHead_UINT__ Temp = VisRalhash(Val,Mov);
_T[Temp].In_TableMapp = Loc * 10 + __Data_Is_exist;//最低位表示存在状态
_T[Loc].In_TableData = Val * 10 + __Data_Is_exist;
}//return (_X+1)*10
__Check_Hash_FunSet void Remove_Hash(LhashNode* _T, __Check_Hash_BarVal __HashHead_UINT__ Val, __Check_Hash_BarVal __HashHead_UINT__ Mov)
{
__Check_Hash_BarVal __HashHead_UINT__ Temp = VisRalhash(Val, Mov);
_T[_T[Temp].In_TableMapp].In_TableData = 0;
_T[Temp].In_TableMapp = 0;
}//return (_X+1)*10
__Check_Hash_FunSet __HashHead_INT__ Find(LhashNode* _T, __Check_Hash_BarVal __HashHead_UINT__ Val,__Check_Hash_BarVal __HashHead_UINT__ Mov)
{
__Check_Hash_BarVal __HashHead_UINT__ Temp = VisRalhash(Val, Mov);
__Check_Hash_BarVal __HashHead_INT__ Index = _T[Temp].In_TableMapp;
if (Index == 0)
return __Hash_Not_Found_The_Value__;
else
return Index / 10;
}//return (_X+1)*10
#endif // !LyThash_HashData
#ifdef YS_Start
#error 原神,启动!
#endif
想抗碰撞的评论区发,可能要肝半个月