zoukankan      html  css  js  c++  java
  • Hash表API

    #include <stdio.h>
    #define SIZE 100000
    typedef struct node{
        int key;
        struct node* next;
        struct node* pre;
    }Node;
    
    Node HashTable[SIZE + 10];
    Node HashPool[SIZE + 10];
    int HashIndex = 0;
    
    Node* getnew(){
        return &HashPool[HashIndex++];
    }
    
    void insertnode(int key, Node*newnode){
    
        Node * dst = &HashTable[key];
    
        newnode->pre = dst;
        newnode->next = dst->next;
        
        dst->next = newnode;
        dst->next->pre = newnode;
    
    }
    
    int getkey(int val){
        return val % (SIZE + 3);
    }
    
    void deletenode(Node*x){
    
        x->pre->next = x->next;
        x->next->pre = x->pre;
    
    }
    
    Node* searchnode(Node* node){
        
        int key = getkey(node->key);
        Node* x = HashTable[key].next;
        while (x != &HashTable[key] && x->key != key){
            x = x->next;
        }
        return x;
    
    }
    
    void initHash(){
    
        HashIndex = 0;
        for (int i = 0; i < SIZE; i++){
            HashTable[i].key = 0;
            HashTable[i].next = &HashTable[i];
            HashTable[i].pre = &HashTable[i];
        }
    
    }
    int main(){
    
        initHash();
        for (int i = 10000; i < 40000; i++){
            Node*newnode = getnew();
            newnode->key = i;
            int hashkey = getkey(i);
            insertnode(hashkey,newnode);
    
            Node *node = searchnode(newnode);
            printf("%x %d
    ",node,node->key);
        }
    
        return 0;
    }
    大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
  • 相关阅读:
    Http协议(一)基础知识
    Redis问题汇总
    Sql Server存储过程传递XML参数
    C# Redis
    Task的异常捕获和处理方法
    Entity Framework教程
    WebBrowser 弹窗体关闭原理
    C# 虹软SDK视频人脸识别和注册
    C#性能优化:延迟初始化Lazy
    DZ 特殊主题简单开发教程
  • 原文地址:https://www.cnblogs.com/linux0537/p/7598907.html
Copyright © 2011-2022 走看看