Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N = 10;
- struct lista
- {
- string val;
- lista *next;
- };
- lista *H[N];
- int fH(string s)
- {
- int sumaModulo = 0;
- for(int i = 0; i < s.length(); i++)
- sumaModulo += s[i];
- return sumaModulo % 10;
- }
- void wstawianie(string s)
- {
- int index = fH(s);
- if(H[index]->val == "") //jesli dodajemy pierwszy element do listy
- {
- lista *p = new lista;
- p->val = s;
- p->next = NULL;
- H[index] = p;
- }
- else //jesli juz jakis element jest, to nowy dodajemy na koniec listy
- {
- lista *head = H[index];
- lista *p = new lista;
- p->val = s;
- p->next = NULL;
- while(head->next)
- head = head->next;
- head->next = p;
- }
- }
- int wyszukiwanie(string s)
- {
- int index = fH(s);
- if(H[index]->val == "") //jak pusto to nie ma
- return 0;
- else
- {
- lista *p = H[index];
- for(p ; p != NULL; p = p->next) //przechodzimy liste o numerze index i szukamy
- if(p->val == s) //jesli jest
- return index;
- return 0;
- }
- }
- void usuwanie(string s)
- {
- int index = fH(s);
- lista *prev = H[index];
- lista *tmp = H[index];
- while(tmp != NULL)
- {
- if(tmp->val == s) //jak wartosc sie zgadza
- {
- if(tmp == H[index]) //jesli usuwamy head z listy
- {
- H[index] = H[index]->next;
- delete tmp;
- tmp = H[index];
- prev = H[index];
- }
- else //jesli usuwamy inny niz head
- {
- prev->next = tmp->next;
- delete tmp;
- tmp = prev->next;
- }
- }
- prev = tmp;
- tmp = tmp->next;
- }
- }
- void drukuj()
- {
- for(int i = 0; i < N; i++)
- {
- cout<<"["<<i<<"] ";
- for(lista *p = H[i]; p; p = p->next)
- cout << p->val << " ";
- cout << endl;
- }
- }
- int main(){
- //inicjalizacja list
- for(int i = 0; i < N; i++)
- {
- H[i] = new lista;
- H[i]->val = "";
- H[i]->next = NULL;
- }
- wstawianie("KOTA");
- wstawianie("BAR");
- wstawianie("ATOK");
- wstawianie("TOKA");
- wstawianie("TO");
- wstawianie("ALA");
- wstawianie("AAL");
- wstawianie("MA");
- wstawianie("AKOT");
- wstawianie("RAB");
- wstawianie("ARB");
- wstawianie("KO");
- wstawianie("RBA");
- drukuj();
- cout << wyszukiwanie("KOTA") << endl;
- cout << wyszukiwanie("BAR")<< endl;
- cout << wyszukiwanie("ATOK")<< endl;
- cout << wyszukiwanie("TOKA")<< endl;
- cout << wyszukiwanie("TO")<< endl;
- cout << wyszukiwanie("ALA")<< endl;
- cout << wyszukiwanie("MA")<< endl;
- cout << wyszukiwanie("AKOT")<< endl;
- cout << wyszukiwanie("RAB")<< endl;
- cout << wyszukiwanie("ARB")<< endl;
- cout << wyszukiwanie("KO")<< endl;
- cout << wyszukiwanie("RBA")<< endl;
- //usuwanie("ALA");
- usuwanie("KOTA");
- usuwanie("BAR");
- usuwanie("ATOK");
- usuwanie("TOKA");
- usuwanie("TO");
- usuwanie("ALA");
- // usuwanie("MA");
- usuwanie("AKOT");
- usuwanie("RAB");
- usuwanie("ARB");
- //usuwanie("KO");
- //usuwanie("RBA");
- drukuj();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement