哈希表/散列表 指针版模版

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;

const int N = 2010;
const int M = 10010;
typedef long long LL;

const int SIZE = 100003;
const int SEED = 13333;

struct Node{
    LL key;
    int type;
    Node *next;
    Node *set(LL _key,Node *_next ){
        key = _key; next = _next; type = -1;
        return this;
    }
};

Node Base[SIZE];

struct Hash{
    Node *H[SIZE], *cur;
    int mark[N], cmark;
    void clear(){
        cur = Base;
        cmark++;
    }
    Hash(){
        memset(mark,0,sizeof(mark));
        cmark = 0;
    }
    int &find(LL key){
        int h = key%SEED;
        if( mark[h] < cmark ) mark[h] = cmark, H[h] = 0;
        for(Node *p = H[h]; p ; p = p->next )
            if( p->key == key ) return p->type;
        H[h] = (cur++)->set(key,H[h]);
        return H[h]->type;
    }
}H;

int main(){

    return 0;
}

 

posted @ 2013-07-31 17:51  yefeng1627  阅读(396)  评论(0编辑  收藏  举报

Launch CodeCogs Equation Editor