Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include<stdio.h>
- #include<malloc.h>
- #include<string>
- #include<stdlib.h>
- using namespace std;
- struct Prajitura
- {
- int cod;
- char* ingredientPrincipal;
- float numarCalorii;
- };
- Prajitura citirePrajitura(int c, char* ingr, float numar)
- {
- Prajitura p;
- p.cod = c;
- p.ingredientPrincipal = (char*)malloc((strlen(ingr) + 1) * sizeof(char));
- strcpy(p.ingredientPrincipal, ingr);
- p.numarCalorii = numar;
- return p;
- }
- void afisarePrajitura(Prajitura p)
- {
- printf("\n Cod: %d -> Prajitura cu %s are %5.2f calorii. ",p.cod,p.ingredientPrincipal,p.numarCalorii);
- }
- struct nod
- {
- Prajitura info;
- nod* next;
- };
- nod* creareNod(nod* next, Prajitura praji)
- {
- nod* nou = (nod*)malloc(sizeof(nod));
- nou->info = citirePrajitura(praji.cod, praji.ingredientPrincipal, praji.numarCalorii);
- nou->next = next;
- return nou;
- }
- nod* inserareInceput(nod* cap, Prajitura praji)
- {
- return creareNod(cap, praji);
- }
- struct HashTable
- {
- nod** vector;
- int dim;
- };
- int getHashCode(int cod, int dim)
- {
- return cod % dim;
- }
- HashTable initializareHashTable(int dim)
- {
- HashTable tabela;
- tabela.dim = dim;
- tabela.vector = (nod**)malloc(dim * sizeof(nod*));
- for (int i = 0; i < dim; i++)
- {
- tabela.vector[i] = NULL;
- }
- return tabela;
- }
- int inserareInHashTable(HashTable tabela, Prajitura praji)
- {
- if (tabela.vector)
- {
- int hashCode = getHashCode(tabela.dim, praji.cod);
- if (tabela.vector[hashCode])
- {
- tabela.vector[hashCode] = inserareInceput(tabela.vector[hashCode], praji);
- }
- else
- {
- tabela.vector[hashCode] = creareNod(NULL, praji);
- }
- return hashCode;
- }
- else
- {
- return -1;
- }
- }
- void afisareTabela(HashTable tabela)
- {
- for (int i = 0; i < tabela.dim; i++)
- {
- nod* p = tabela.vector[i];
- while (p)
- {
- afisarePrajitura(p->info);
- p = p->next;
- }
- printf("\n");
- }
- }
- void stergereTabela(HashTable* tabela)
- {
- for (int i = 0; i < tabela->dim;i++)
- {
- nod* p = tabela->vector[i];
- while (p)
- {
- free(p->info.ingredientPrincipal);
- nod* temp = p;
- p = p->next;
- free(temp);
- }
- }
- free(tabela->vector);
- tabela->vector = NULL;
- tabela->dim = 0;
- }
- int main()
- {
- HashTable tabela = initializareHashTable(5);
- int pozitie = inserareInHashTable(tabela, citirePrajitura(1,(char*)"Lapte",30));
- inserareInHashTable(tabela, citirePrajitura(4, (char*)"Faina", 100));
- inserareInHashTable(tabela, citirePrajitura(6, (char*)"Ciocolata", 200));
- afisareTabela(tabela);
- stergereTabela(&tabela);
- getchar();
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement