堆的补充:
head_swap(int a,int b)
{
swap(hp[ ph[a] ],hp[ ph[a] ]) //交换两个数的下标
//ph以插入顺序(因为会排序)找元素 //hp以元素找下标
swap(ph[a],ph[b]); //交换两个元素的查询-->通过元素下标找元素的查询
swap(h[a],h[b]); //交换数
}
哈希表:
//拉链法:
#include<iostream>
using namespace std;
const int N=100003;
int h[N],en[N],e[N],dix;
int insert(int x)
{
int k=(x%n+n)%n //保证k不为负数;
e[dix]=x; ne[idx]=h[k]; h[k]=dix++;
}
bool find(int x)
{
int k=(x%n+n)%n;
for(int i=h[k] ; i!=-1 ;e[ i ]=en[ h[k] ]) { if(i==x); }return true;
else return false;
}
//开放寻址法
h[N];null=超出数据范围数字;
int find(int x)
{
int k = (x%n+n)%n;
while(h[k]!=x&&h[k]!=null) k++,if(k==N)k=0;
return k;
}