#include<iostream> #include<vector> using namespace std; struct listnode { int val; listnode* next; listnode(int x):val(x),next(NULL){} }; int hash_index(int key, int table_len) { return key % table_len; } void insert(listnode *table[], listnode* node, int table_len) { int index = hash_index(node->val, table_len); node->next = table[index]; table[index] = node; } bool hash_search(listnode *table[], int val, int table_len) { int index = hash_index(val,table_len); listnode* head = table[index]; while(head) { if(head->val == val) return true; head = head->next; } return false; } int main() { const int table_len = 11; listnode *table[table_len] ={0}; vector<listnode*> listnode_vec; int test[8] = {1,2,33,55,11,6,88,44}; for(int i = 0; i < 8; i++) { listnode_vec.push_back(new listnode(test[i])); } for(int i = 0; i < listnode_vec.size(); i++) insert(table, listnode_vec[i], table_len); printf("Hashtable:\n"); for(int i = 0; i < table_len; i++) { printf("[%d]",i); listnode* head = table[i]; while(head) { printf("->[%d]",head->val); head = head->next; } printf("\n"); } return 0; }