fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct element element;
  5. typedef struct hashTable hashTable;
  6.  
  7. struct element {
  8. int value;
  9. element *next;
  10. element *tail;
  11. };
  12.  
  13. struct hashTable {
  14. element **table;
  15. int size;
  16. };
  17.  
  18. hashTable *createHashTable(int size) {
  19. int i;
  20. hashTable *newHashTable = (hashTable*) malloc(sizeof(hashTable));
  21. newHashTable->size = size;
  22. newHashTable->table = (element**) malloc(size*sizeof(element));
  23. for (i = 0; i < size; i++) {
  24. newHashTable->table[i] = NULL;
  25. }
  26.  
  27. return newHashTable;
  28. }
  29.  
  30. void put(hashTable *ht, int d) {
  31. int key = d % ht->size;
  32. element *newElement = (element*) malloc(sizeof(element));
  33. newElement->value = d;
  34. newElement->next = NULL;
  35. if(ht->table[key] == NULL) {
  36. newElement->tail = newElement;
  37. ht->table[key] = newElement;
  38. } else {
  39. ht->table[key]->tail->next = newElement;
  40. ht->table[key]->tail = newElement;
  41. }
  42. }
  43.  
  44. void printList(hashTable *ht) {
  45. int i;
  46. element *j;
  47. for(i = 0; i < ht->size; i++) {
  48. printf("%d ", i);
  49. j = ht->table[i];
  50. while(j != NULL) {
  51. printf("-> %d ", j->value);
  52. j = j->next;
  53. }
  54. printf("-> \\n");
  55. }
  56.  
  57. }
  58.  
  59. int main() {
  60. int n, m, c, d;
  61. scanf("%d", &n);
  62. while(n--) {
  63. scanf("%d%d", &m, &c);
  64. hashTable *ht = createHashTable(m);
  65. while(c--) {
  66. scanf("%d", &d);
  67. put(ht, d);
  68. }
  69. printList(ht);
  70. }
  71.  
  72. return 0;
  73. }
Success #stdin #stdout 0s 9432KB
stdin
2
13 9
44 45 49 70 27 73 92 97 95
7 8
35 12 2 17 19 51 88 86
stdout
0 -> \n1 -> 27 -> 92 -> \n2 -> \n3 -> \n4 -> 95 -> \n5 -> 44 -> 70 -> \n6 -> 45 -> 97 -> \n7 -> \n8 -> 73 -> \n9 -> \n10 -> 49 -> \n11 -> \n12 -> \n0 -> 35 -> \n1 -> \n2 -> 2 -> 51 -> 86 -> \n3 -> 17 -> \n4 -> 88 -> \n5 -> 12 -> 19 -> \n6 -> \n