zoukankan      html  css  js  c++  java
  • Hash API

    #include <iostream>
    using namespace std;
    
    #define size 100
    
    struct node{
    
        int val;
        node *pre;
        node *next;
    
    };
    
    int index = 0;
    node HashTable[size];
    node HashPool[size];
    
    node *getNewNode()
    {
        return &HashPool[index++];
    }
    
    void init()
    {
        index = 0;
        for(int i = 0; i < size; i++)
        {
            HashTable[i].next = &HashTable[i];
            HashTable[i].pre = &HashTable[i];
            HashTable[i].val = 0;
        }
    }
    
    void insert(int key,node *newNode)
    {
        node *head = &HashTable[key];
        
        newNode->next = head ->next;
        newNode->pre = head;
        head ->next->pre = newNode;
        head->next = newNode;
        
    }
    
    node * searchNode(int key,node *newNode)
    {
        node *x = HashTable[key].next;
        while(x != &HashTable[key]){
            x = x->next;
        }
        if(x != &HashTable[key])
            return x;
        else return NULL;
    }
    
    void deleteNode(node * node){
        node->pre->next = node->next;
        node->next->pre = node->pre;
    }
    
    int main()
    {
        init();
        for(int i = 0; i < 100; i++)
        {
            int num = rand()%100+1;
            int key = num % 11;
            HashTable[key].val++;
            node *newNode = getNewNode();
            newNode->val = num;
            insert(key,newNode);
        }
    
        for(int i = 0; i < 100; i++)
        {
            if(HashTable[i].val != 0)
            {
                cout << i << " ";
                cout << HashTable[i].val << " : " ;
                node *head = (&HashTable[i]) -> next;
                while(head != &HashTable[i])
                {
                    cout << head->val << "  ";
                    head = head -> next;
                }
                cout << endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    Lc112_路径总和
    多线程(4)
    Lc257_二叉树的所有路径
    Lc226_翻转二叉树
    Lc145_二叉树的后序遍历
    Lc144_二叉树的前序遍历
    Lc102_二叉树的层序遍历
    Lc101_对称二叉树
    Lc100_相同的树
    Lc94_二叉树的中序遍历
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/8033776.html
Copyright © 2011-2022 走看看