title: How do I iterate and print hashtable in c?
body: <p>The implementation uses a structure similar to the "Static Sequence List" (it uses an array to store the elements). I can insert and query 1 item. But I need to list all the items.</p>
  
  <p>The code:</p>
  
  <pre><code>struct cidade {
      int pkCidade;
      char nomeCidade[50];
  };
  
  struct hashCidade {
      int qtdCidade, TABLE_SIZE;
      struct cidade **itensCidade;
  };
  
  typedef struct hashCidade HashCidade;
  
  HashCidade *createHashCidade(int TABLE_SIZE);
  void releaseHashCidade(HashCidade *ha);
  int insertHashCidade(HashCidade *ha, struct cidade CidadeH);
  int findHashCidade(HashCidade *ha, char *str, struct cidade *CidadeH);
  
  HashCidade *createHashCidade(int TABLE_SIZE) {
      HashCidade *ha = (HashCidade*)malloc(sizeof(HashCidade));
      if (ha != NULL) {
          int i;
          ha-&gt;TABLE_SIZE = TABLE_SIZE;
          ha-&gt;itensCidade = (struct cidade **)
                                  malloc(TABLE_SIZE * sizeof(struct cidade*));
          if (ha-&gt;itensCidade == NULL) {
              free(ha);
              return NULL;
          }
          ha-&gt;qtdCidade = 0;
          for (i = 0; i &lt; ha-&gt;TABLE_SIZE; i++)
              ha-&gt;itensCidade[i] = NULL;
      }
      return ha;
  }
  
  void releaseHashCidade(HashCidade *ha) {
      if (ha != NULL) {
          int i;
          for (i = 0; i &lt; ha-&gt;TABLE_SIZE; i++) {
              if (ha-&gt;itensCidade[i] != NULL)
                  free(ha-&gt;itensCidade[i]);
          }
          free(ha-&gt;itensCidade);
          free(ha);
      }
  }
  
  int insertHashCidade(HashCidade *ha, struct cidade CidadeH) {
      if (ha == NULL || ha-&gt;qtdCidade == ha-&gt;TABLE_SIZE)
          return 0;
      int chave = valorString(CidadeH.nomeCidade);
      int pos = chaveDivisao(chave, ha-&gt;TABLE_SIZE);
      struct cidade *nova;
      nova = (struct cidade *)malloc(sizeof(struct cidade));
      if(nova == NULL)
          return 0;
      *nova = CidadeH;
      ha-&gt;itensCidade[pos] = nova;
      ha-&gt;qtdCidade++;
      return 1;
  }
  
  int findHashCidade(HashCidade *ha, char *str, struct cidade *CidadeH) {
      if (ha == NULL)
          return 'n';
      int chave = valorString(str);
      int pos = chaveDivisao(chave, ha-&gt;TABLE_SIZE);
      if (ha-&gt;itensCidade[pos] == NULL)
          return 0;
      else
          *CidadeH = *(ha-&gt;itensCidade[pos]);
      return 1;
  }
  </code></pre>
  
  <p>Thanks for any help.</p>