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;
    }
    大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
  • 相关阅读:
    delphi 如何让ScrollBox的内容与滚动条一起实时滚动
    C# Wpf集合双向绑定
    C# Wpf异步修改UI,多线程修改UI(二)
    C# 自定义线程修改UI(一)
    WPF FindName()查找命名注册的元素
    数据绑定
    WPF绑定Binding及模式
    WPF-Binding的源
    WPF-Binding对数据的检验
    WPF-数据转换
  • 原文地址:https://www.cnblogs.com/linux0537/p/7598907.html
Copyright © 2011-2022 走看看