您的位置:首页 > 文旅 > 美景 > b2b营销_网页源代码有什么用_站优化_网站推广专家

b2b营销_网页源代码有什么用_站优化_网站推广专家

2024/10/7 2:21:10 来源:https://blog.csdn.net/gj15376/article/details/142405608  浏览:    关键词:b2b营销_网页源代码有什么用_站优化_网站推广专家
b2b营销_网页源代码有什么用_站优化_网站推广专家

写了个哈希表,底层逻辑基于结构体数组,核心结构:HashNode,结构外壳:HashTable_R,冲突处理以后会加的(QwQ)~

目前代码:

#ifndef PYIC_X
#define PYIC_Xunsigned int PYIC_Hash(unsigned int Val, unsigned int Mov) {unsigned int Ht[4] = { 3, 7, 2, 1 };unsigned int Move = (Val + Mov) % 4;unsigned int PrimeFactor1 = 31;unsigned int PrimeFactor2 = 37; // 使用另一个质数  unsigned int HashValue = (Val * PrimeFactor1 + Ht[Move]) % 0xFFFFFFFF;// 结合第二个质数  HashValue = (HashValue * PrimeFactor2 + (Val ^ Mov)) % 0xFFFFFFFF;return HashValue;
}
typedef struct HashNode__Made__PYIC_X
{unsigned int Val;unsigned int Map;int _Vbool;int _Mbool;
}HashNode;
void Insert_Hash(HashNode Table[], unsigned int Num, unsigned int Val, unsigned int Mov)
{unsigned int Index = PYIC_Hash(Val, Mov);Table[Index]._Mbool = 1;Table[Index].Map = Num;Table[Num]._Vbool = 1;Table[Num].Val = Val;
}
void Remove_Hash(HashNode Table[], unsigned int Val, unsigned int Mov)
{unsigned int Index = PYIC_Hash(Val, Mov);Table[Table[Index].Map]._Vbool = 0;Table[Table[Index].Map].Val = 0;Table[Index]._Mbool = 0;Table[Index].Map = 0;
}
int Find_Hash(HashNode Table[], unsigned Val, unsigned int Mov)
{unsigned int Index = PYIC_Hash(Val, Mov);if (Table[Index]._Mbool == 1)return (int)Table[Index].Map;elsereturn -1;
}
void RemNum_Hash(HashNode Table[], unsigned Num, unsigned int Mov)
{unsigned int Index = PYIC_Hash(Table[Num].Val, Mov);Table[Index]._Mbool = 0;Table[Index].Map = 0;Table[Num]._Vbool = 0;Table[Num].Val = 0;
}unsigned int GetHash(HashNode Table[], int Num)
{return Table[Num].Val;
}typedef struct HashTable_R
{HashNode* Node_Array;unsigned int All;unsigned int Num;
}HashTable_R;
void Insert_HashR(HashTable_R* Table,int Num,int Val,int Mov)
{Insert_Hash(Table->Node_Array, Num, Val, Mov);Table->All += Val;Table->Num += 1;
}
void Remove_HashR(HashTable_R* Table, int Val, int Mov)
{Remove_Hash(Table->Node_Array, Val, Mov);Table->Num -= 1;Table->All -= Val;
}
int Find_HashR(HashTable_R* Table, int Val, int Mov)
{return Find_Hash(Table->Node_Array, Val, Mov);
}#if 0
typedef struct ListNode
{int Val;struct ListNode* Next;
}ListNode;
void Insert_List(ListNode* Head, int Val)
{struct ListNode On {};while (Head->Next =!0){Head = Head->Next;}On.Val = Val;On.Next = 0;Head->Next = &On;
}
int Find_List(ListNode* Head, int Val)
{
int i = 0;while (Head->Next = !0){if (Head->Val = Val){return i;}Head = Head->Next;i++;}return -1;
}
#endif
#endif

看得懂的就散吧,看不懂都留下:

-----------【代码解析】--------------------------------------------------------------------------

总体函数逻辑和上一个一样,改了哈希函数,使它更加强大,且不容易碰撞。并增加了异或操作,使其拥有了雪崩效应;

增加了外壳:HashTable_R

这里面有个指针指向一个结构体数组版的哈希表,其名为Node_Array,作用是用于套用哈希表。

All:所有值的和

Num:元素的数量

这次,每插入一个元素都会增加计数器和All,添加了新功能。

散会。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com