Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <windows.h>
- #include <stdbool.h>
- #include <time.h>
- double obliczSekundy( clock_t czas )
- {
- return (double)czas / CLOCKS_PER_SEC;
- }
- struct stack
- {
- int przesuniecia;
- int porownania;
- }staty;
- struct ksiazka_telefoniczna
- {
- int ID;
- char imie[40];
- char nazwisko[40];
- char ulica[40];
- char numer_domu[40];
- char miasto[40];
- char kod_pocztowy[40];
- //char wojewodztwo[40];
- int numer_telefonu;
- char mail[40];
- struct ksiazka_telefoniczna *next,*prev;
- };
- void swap ( int* a, int* b )
- { int t = *a;
- *a = *b;
- *b = t;
- }
- void swap_text( char lancuch1[], char lancuch2[] )
- { char tmp[40];
- strcpy(tmp,lancuch1);
- strcpy(lancuch1,lancuch2);
- strcpy(lancuch2,tmp);
- }
- struct ksiazka_telefoniczna *lastNode(struct ksiazka_telefoniczna *root)// A utility function to find last node of linked list
- {
- while (root && root->next)
- root = root->next;
- return root;
- }
- //ID ROSNACO
- struct ksiazka_telefoniczna* partition(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- int x = h->ID;
- int por=0;
- int przes=0;
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- por+=por+11;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- przes+=przes+5;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- staty.porownania = por;
- staty.przesuniecia = przes;
- return i;
- }
- void _quickSort(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition(l, h);
- _quickSort(l, p->prev);
- _quickSort(p->next, h);
- }
- }
- void quickSort(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort(head, h);
- }
- //ID MALEJACO
- struct ksiazka_telefoniczna* partition_id_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- int x = h->ID;
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if (j->ID >= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_id_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_id_malejaco(l, h);
- _quickSort_id_malejaco(l, p->prev);
- _quickSort_id_malejaco(p->next, h);
- }
- }
- void quickSort_id_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_id_malejaco(head, h);
- }
- //IMIE ROSNACO
- struct ksiazka_telefoniczna* partition_imie_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->imie);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->imie) == 1 || strcmp(x,j->imie)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_imie_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_imie_rosnaco(l, h);
- _quickSort_imie_rosnaco(l, p->prev);
- _quickSort_imie_rosnaco(p->next, h);
- }
- }
- void quickSort_imie_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_imie_rosnaco(head, h);
- }
- //IMIE MALEJACO
- struct ksiazka_telefoniczna* partition_imie_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->imie);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->imie) == -1 || strcmp(x,j->imie)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_imie_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_imie_malejaco(l, h);
- _quickSort_imie_malejaco(l, p->prev);
- _quickSort_imie_malejaco(p->next, h);
- }
- }
- void quickSort_imie_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_imie_malejaco(head, h);
- }
- //NAZWISKO ROSNACO
- struct ksiazka_telefoniczna* partition_nazwisko_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->nazwisko);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->nazwisko) == 1 || strcmp(x,j->nazwisko)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_nazwisko_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_nazwisko_rosnaco(l, h);
- _quickSort_nazwisko_rosnaco(l, p->prev);
- _quickSort_nazwisko_rosnaco(p->next, h);
- }
- }
- void quickSort_nazwisko_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_nazwisko_rosnaco(head, h);
- }
- //NAZWISKO MALEJACO
- struct ksiazka_telefoniczna* partition_nazwisko_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->nazwisko);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->nazwisko) == -1 || strcmp(x,j->nazwisko)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_nazwisko_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_nazwisko_malejaco(l, h);
- _quickSort_nazwisko_malejaco(l, p->prev);
- _quickSort_nazwisko_malejaco(p->next, h);
- }
- }
- void quickSort_nazwisko_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_nazwisko_malejaco(head, h);
- }
- //ULICA ROSNACO
- struct ksiazka_telefoniczna* partition_ulica_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->ulica);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->ulica) == 1 || strcmp(x,j->ulica)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_ulica_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_ulica_rosnaco(l, h);
- _quickSort_ulica_rosnaco(l, p->prev);
- _quickSort_ulica_rosnaco(p->next, h);
- }
- }
- void quickSort_ulica_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_ulica_rosnaco(head, h);
- }
- //ULICA MALEJACO
- struct ksiazka_telefoniczna* partition_ulica_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->ulica);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->ulica) == -1 || strcmp(x,j->ulica)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_ulica_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_ulica_malejaco(l, h);
- _quickSort_ulica_malejaco(l, p->prev);
- _quickSort_ulica_malejaco(p->next, h);
- }
- }
- void quickSort_ulica_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_ulica_malejaco(head, h);
- }
- //NUMER DOMU ROSNACO
- struct ksiazka_telefoniczna* partition_numer_domu_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->numer_domu);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->numer_domu) == 1 || strcmp(x,j->numer_domu)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_numer_domu_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_numer_domu_rosnaco(l, h);
- _quickSort_numer_domu_rosnaco(l, p->prev);
- _quickSort_numer_domu_rosnaco(p->next, h);
- }
- }
- void quickSort_numer_domu_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_numer_domu_rosnaco(head, h);
- }
- //NUMER DOMU MALEJACO
- struct ksiazka_telefoniczna* partition_numer_domu_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->numer_domu);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->numer_domu) == -1 || strcmp(x,j->numer_domu)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_numer_domu_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_numer_domu_malejaco(l, h);
- _quickSort_numer_domu_malejaco(l, p->prev);
- _quickSort_numer_domu_malejaco(p->next, h);
- }
- }
- void quickSort_numer_domu_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_numer_domu_malejaco(head, h);
- }
- //MIASTO ROSNACO
- struct ksiazka_telefoniczna* partition_miasto_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->miasto);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->miasto) == 1 || strcmp(x,j->miasto)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_miasto_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_miasto_rosnaco(l, h);
- _quickSort_miasto_rosnaco(l, p->prev);
- _quickSort_miasto_rosnaco(p->next, h);
- }
- }
- void quickSort_miasto_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_miasto_rosnaco(head, h);
- }
- //MIASTO MALEJACO
- struct ksiazka_telefoniczna* partition_miasto_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->miasto);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->miasto) == -1 || strcmp(x,j->miasto)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_miasto_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_miasto_malejaco(l, h);
- _quickSort_miasto_malejaco(l, p->prev);
- _quickSort_miasto_malejaco(p->next, h);
- }
- }
- void quickSort_miasto_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_miasto_malejaco(head, h);
- }
- //KOD POCZTOWY ROSNACO
- struct ksiazka_telefoniczna* partition_kod_pocztowy_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->kod_pocztowy);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->kod_pocztowy) == 1 || strcmp(x,j->kod_pocztowy)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_kod_pocztowy_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_kod_pocztowy_rosnaco(l, h);
- _quickSort_kod_pocztowy_rosnaco(l, p->prev);
- _quickSort_kod_pocztowy_rosnaco(p->next, h);
- }
- }
- void quickSort_kod_pocztowy_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_kod_pocztowy_rosnaco(head, h);
- }
- //MIASTO MALEJACO
- struct ksiazka_telefoniczna* partition_kod_pocztowy_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->kod_pocztowy);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->kod_pocztowy) == -1 || strcmp(x,j->kod_pocztowy)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_kod_pocztowy_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_kod_pocztowy_malejaco(l, h);
- _quickSort_kod_pocztowy_malejaco(l, p->prev);
- _quickSort_kod_pocztowy_malejaco(p->next, h);
- }
- }
- void quickSort_kod_pocztowy_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_kod_pocztowy_malejaco(head, h);
- }
- //TELEFON ROSNACO
- struct ksiazka_telefoniczna* partition_telefon_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- int x = h->numer_telefonu;
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if (j->numer_telefonu <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_telefon_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_telefon_rosnaco(l, h);
- _quickSort_telefon_rosnaco(l, p->prev);
- _quickSort_telefon_rosnaco(p->next, h);
- }
- }
- void quickSort_telefon_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_telefon_rosnaco(head, h);
- }
- //ID MALEJACO
- struct ksiazka_telefoniczna* partition_telefon_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- int x = h->numer_telefonu;
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if (j->numer_telefonu >= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_telefon_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_telefon_malejaco(l, h);
- _quickSort_telefon_malejaco(l, p->prev);
- _quickSort_telefon_malejaco(p->next, h);
- }
- }
- void quickSort_telefon_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_telefon_malejaco(head, h);
- }
- //MAIL ROSNACO
- struct ksiazka_telefoniczna* partition_mail_rosnaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->mail);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->mail) == 1 || strcmp(x,j->mail)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_mail_rosnaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_mail_rosnaco(l, h);
- _quickSort_mail_rosnaco(l, p->prev);
- _quickSort_mail_rosnaco(p->next, h);
- }
- }
- void quickSort_mail_rosnaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_mail_rosnaco(head, h);
- }
- //MAIL MALEJACO
- struct ksiazka_telefoniczna* partition_mail_malejaco(struct ksiazka_telefoniczna *l, struct ksiazka_telefoniczna *h)
- {
- // set pivot as h element
- char x[40];
- strcpy(x,h->mail);
- // similar to i = l-1 for array implementation
- struct ksiazka_telefoniczna *i = l->prev;
- struct ksiazka_telefoniczna *j = l;
- // Similar to "for (int j = l; j <= h- 1; j++)"
- for (j = l; j != h; j = j->next)
- {
- if(strcmp(x,j->mail) == -1 || strcmp(x,j->mail)==0 )//if (j->ID <= x)
- {
- // Similar to i++ for array
- i = (i == NULL)? l : i->next;
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- }
- }
- i = (i == NULL)? l : i->next; // Similar to i++
- swap(&(i->ID), &(j->ID));
- swap_text((i->imie), (j->imie));
- swap_text((i->nazwisko), (j->nazwisko));
- swap_text((i->ulica), (j->ulica));
- swap_text((i->numer_domu), (j->numer_domu));
- swap_text((i->miasto), (j->miasto));
- swap_text((i->kod_pocztowy), (j->kod_pocztowy));
- swap_text((i->mail), (j->mail));
- swap(&(i->numer_telefonu), &(j->numer_telefonu));
- //swap_text((i->wojewodztwo), (j->wojewodztwo));
- return i;
- }
- void _quickSort_mail_malejaco(struct ksiazka_telefoniczna* l, struct ksiazka_telefoniczna *h)
- {
- if (h != NULL && l != h && l != h->next)
- {
- struct ksiazka_telefoniczna *p = partition_mail_malejaco(l, h);
- _quickSort_mail_malejaco(l, p->prev);
- _quickSort_mail_malejaco(p->next, h);
- }
- }
- void quickSort_mail_malejaco(struct ksiazka_telefoniczna *head)
- {
- struct ksiazka_telefoniczna *h = lastNode(head);
- _quickSort_mail_malejaco(head, h);
- }
- ///////////////////DODAWANIE ELEMENTOW LISTY///////////////////
- struct ksiazka_telefoniczna *create_list_ksiazka_telefoniczna(int ID, char imie[],char nazwisko[],char miasto[],char ulica[],char numer_domu[],char kod_pocztowy[],
- int numer_telefonu,char mail[])
- {
- struct ksiazka_telefoniczna *front = (struct ksiazka_telefoniczna *)malloc(sizeof(struct ksiazka_telefoniczna));
- if (front != NULL)
- {
- front->ID = ID;
- strcpy(front->imie,imie);
- strcpy(front->nazwisko,nazwisko);
- strcpy(front->miasto,miasto);
- strcpy(front->ulica,ulica);
- strcpy(front->numer_domu,numer_domu);
- strcpy(front->kod_pocztowy,kod_pocztowy);
- //strcpy(front->wojewodztwo,wojewodztwo);
- front->numer_telefonu = numer_telefonu;
- strcpy(front->mail,mail);
- front->prev = NULL;
- front->next = NULL;
- }
- return front;
- }
- struct ksiazka_telefoniczna *insert_front_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front, struct ksiazka_telefoniczna *new_node) {
- new_node->next = front;
- front->prev = new_node;
- return new_node;
- }
- struct ksiazka_telefoniczna *find_spot_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front, int ID) {
- struct ksiazka_telefoniczna *prev = NULL;
- while ((NULL != front) && (front->ID < ID))
- {
- prev = front;
- front = front->next;
- }
- return prev;
- }
- void insert_after_ksiazka_telefoniczna(struct ksiazka_telefoniczna *node, struct ksiazka_telefoniczna *new_node) {
- new_node->prev = node;
- new_node->next = node->next;
- node->next->prev = new_node;
- node->next = new_node;
- }
- void insert_back_ksiazka_telefoniczna(struct ksiazka_telefoniczna *back, struct ksiazka_telefoniczna *new_node) {
- back->next = new_node;
- new_node->prev = back;
- }
- struct ksiazka_telefoniczna *insert_node_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front,int ID, char imie[],char nazwisko[],char miasto[],char ulica[],char numer_domu[],char kod_pocztowy[],
- int numer_telefonu,char mail[])
- {
- if (front == NULL)
- return NULL;
- struct ksiazka_telefoniczna *new_node = (struct ksiazka_telefoniczna*)malloc(sizeof(struct ksiazka_telefoniczna));
- if (new_node != NULL)
- {
- new_node->ID = ID;
- strcpy(new_node->imie,imie);
- strcpy(new_node->nazwisko,nazwisko);
- strcpy(new_node->miasto,miasto);
- strcpy(new_node->ulica,ulica);
- strcpy(new_node->numer_domu,numer_domu);
- strcpy(new_node->kod_pocztowy,kod_pocztowy);
- //strcpy(new_node->wojewodztwo,wojewodztwo);
- new_node->numer_telefonu = numer_telefonu;
- strcpy(new_node->mail,mail);
- new_node->prev = new_node->next = NULL;
- if (front->ID>= ID)
- return insert_front_ksiazka_telefoniczna(front, new_node);
- else
- {
- struct ksiazka_telefoniczna *node = find_spot_ksiazka_telefoniczna(front, ID);
- if (NULL != node->next)
- insert_after_ksiazka_telefoniczna(node, new_node);
- else
- insert_back_ksiazka_telefoniczna(node, new_node);
- }
- }
- return front;
- }
- ///////////////////USUWANIE ELEMENTOW LISTY///////////////////
- struct ksiazka_telefoniczna *delete_front_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front)
- {
- struct ksiazka_telefoniczna *next = front->next;
- if (NULL != next)
- next->prev = NULL;
- free(front);
- return next;
- }
- void delete_within_ksiazka_telefoniczna(struct ksiazka_telefoniczna *node)
- {
- node->next->prev = node->prev;
- node->prev->next = node->next;
- free(node);
- }
- void delete_back_ksiazka_telefoniczna(struct ksiazka_telefoniczna *back)
- {
- back->prev->next = NULL;
- free(back);
- }
- struct ksiazka_telefoniczna *znajdz_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front, int ID)
- {
- while ((NULL != front) && (front->ID != ID))
- front = front->next;
- return front;
- }
- void front_back_ksiazka_telefoniczna(struct ksiazka_telefoniczna **front) {
- for (; NULL != (*front)->prev; *front = (*front)->prev)
- {
- }
- }
- struct ksiazka_telefoniczna *delete_node_ksiazka_telefoniczna(struct ksiazka_telefoniczna **front, int ID)
- {
- if ((*front)->ID == ID && (*front)->next == NULL && (*front)->prev == NULL)
- {
- free(*front);
- *front = NULL;
- return *front;
- }
- if ((*front)->ID == ID && (*front)->next != NULL && (*front)->prev == NULL)
- {
- *front = (*front)->next;
- free((*front)->prev);
- (*front)->prev = NULL;
- return *front;
- }
- (*front) = znajdz_ksiazka_telefoniczna(*front, ID);
- struct ksiazka_telefoniczna *node = *front;
- if ((*front)->ID == ID && (*front)->next != NULL && (*front)->prev != NULL)
- {
- (*front)->next->prev = (*front)->prev;
- (*front)->prev->next = (*front)->next;
- front_back_ksiazka_telefoniczna(&(*front));
- free(node);
- return *front;
- }
- if ((*front)->ID == ID && (*front)->next == NULL && (*front)->prev != NULL)
- {
- (*front)->prev->next = NULL;
- front_back_ksiazka_telefoniczna(&(*front));
- free(node);
- return *front;
- }
- return NULL;
- }
- void zmiana_numeracji(struct ksiazka_telefoniczna *front)
- {
- int result=1;
- for(; front != NULL; front = front->next)
- {
- front->ID=result;
- result++;
- }
- }
- bool sprawdz_numer_ID(struct ksiazka_telefoniczna *front, int numer)
- {
- for (; NULL != front; front = front->next)
- {
- if (front->ID == numer) {
- return true;
- }
- }
- return false;
- }
- bool sprawdz_lancuch_znakow_ksiazka_telefoniczna(char lancuch[])
- {
- int i;
- for(i=0;i<strlen(lancuch);i++)
- {
- if(!((lancuch[i]>=65 && lancuch[i]<=90) || (lancuch[i]>=97 && lancuch[i]<=122)||(lancuch[i]==' ')))
- return false;
- if(lancuch[0]>=97 && lancuch[0]<=122)//32
- lancuch[0]=lancuch[0]-32;//zamiana pierwszej malej litery na duza
- }
- return true;
- }
- int ustal_najwieksze_ID_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front)
- {
- if(front == NULL)
- {
- return -1;
- }
- int result = front->ID;
- for(; front != NULL; front = front->next)
- {
- if(result<front->ID)
- {
- result=front->ID;
- }
- }
- return result;
- }
- bool wybor_wojewodztwa(char wojewodztwo[])
- {
- int wybor;
- puts("1) Wojewodztwo dolnoslaskie");
- puts("2) Wojewodztwo kujawsko-pomorskie");
- puts("3) Wojewodztwo lubelskie");
- puts("4) Wojewodztwo lubuskie");
- puts("5) Wojewodztwo lodzkie");
- puts("6) Wojewodztwo malopolskie");
- puts("7) Wojewodztwo mazowieckie");
- puts("8) Wojewodztwo opolskie");
- puts("9) Wojewodztwo podkarpackie");
- puts("10) Wojewodztwo podlaskie");
- puts("11) Wojewodztwo pomorskie");
- puts("12) Wojewodztwo slaskie");
- puts("13) Wojewodztwo swietokrzyskie");
- puts("14) Wojewodztwo warminsko-Mazurskie");
- puts("15) Wojewodztwo wielkopolskie");
- puts("16) Wojewodztwo zachodniopomorskie");
- while(scanf("%d", &wybor) != 1) //dopóki nie uda się wczytać
- {
- //ew. komunikat błędu
- int c;
- while((c = getchar()) != '\n' && c != EOF); //pętla wyciągająca znaki z bufora
- }
- switch(wybor)
- {
- case 1:
- sprintf(wojewodztwo,"Dolnoslaskie");
- break;
- case 2:
- sprintf(wojewodztwo,"Kujawsko-Pomorskie");
- break;
- case 3:
- sprintf(wojewodztwo,"Lubelskie");
- break;
- case 4:
- sprintf(wojewodztwo,"Lubuskie");
- break;
- case 5:
- sprintf(wojewodztwo,"Lodzkie");
- break;
- case 6:
- sprintf(wojewodztwo,"Malopolskie");
- break;
- case 7:
- sprintf(wojewodztwo,"Mazowieckie");
- break;
- case 8:
- sprintf(wojewodztwo,"Opolskie");
- break;
- case 9:
- sprintf(wojewodztwo,"Podkarpackie");
- break;
- case 10:
- sprintf(wojewodztwo,"Podlaskie");
- break;
- case 11:
- sprintf(wojewodztwo,"Pomorskie");
- break;
- case 12:
- sprintf(wojewodztwo,"Slaskie");
- break;
- case 13:
- sprintf(wojewodztwo,"Swietokrzyskie");
- break;
- case 14:
- sprintf(wojewodztwo,"Warminsko-Mazurskie");
- break;
- case 15:
- sprintf(wojewodztwo,"Wielkopolskie");
- break;
- case 16:
- sprintf(wojewodztwo,"Zachodniopomorskie");
- break;
- default:
- puts("Bledny wybor");
- return false;
- break;
- }
- return true;
- }
- void wprowadz_dane_ksiazka_telefoniczna(char imie[],char nazwisko[],char miasto[],char ulica[],char numer_domu[],char kod_pocztowy[],
- int *numer_telefonu,char mail[])
- {
- char bezpieczny[10];
- do
- {
- printf("Podaj imie: ");
- scanf("%s", imie);
- }while(!sprawdz_lancuch_znakow_ksiazka_telefoniczna(imie));
- do
- {
- printf("Podaj nazwisko: ");
- scanf("%s", nazwisko);
- }while(!sprawdz_lancuch_znakow_ksiazka_telefoniczna(nazwisko));
- do
- {
- fflush(stdin);
- printf("Podaj ulice zamieszkania: ");
- scanf("%[^\n]s", ulica);
- fflush(stdin);
- }while(!sprawdz_lancuch_znakow_ksiazka_telefoniczna(ulica));
- printf("Podaj numer domu: ");
- scanf("%s", numer_domu);
- do
- {
- fflush(stdin);
- printf("Podaj miasto zamieszkania: ");
- scanf("%[^\n]s", miasto);
- fflush(stdin);
- }while(!sprawdz_lancuch_znakow_ksiazka_telefoniczna(miasto));
- do
- {
- do
- {
- printf("Podaj kod pocztowy: ");
- scanf("%s", kod_pocztowy);
- }while(strlen(kod_pocztowy)!=6);
- if(kod_pocztowy[2] != '-')
- puts("Zly format kodu pocztowego, wlasciwy to XX-XXX");
- }while(kod_pocztowy[2] != '-');
- //printf("Wybierz wojewodztwo: \n\n");
- //while(!(wybor_wojewodztwa(wojewodztwo)));
- do
- {
- printf("Podaj numer telefonu (9cyfr): ");
- scanf("%s", bezpieczny);
- if (atoi(bezpieczny) != 0)
- *numer_telefonu = atoi(bezpieczny);
- else
- continue;
- } while ((*numer_telefonu < 100000000) || (*numer_telefonu > 999999999));
- powrot_mail:
- printf("Podaj adres E-MAIL: ");
- scanf("%s",mail);
- int i;
- int checkmail=0;
- for(i=0;i<strlen(mail);i++)
- {
- if(mail[i]=='@')
- {
- checkmail = 1;
- break;
- }
- }
- if(checkmail == 0)
- {
- goto powrot_mail;
- }
- }
- void save_to_file_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front)
- {
- FILE *plik;
- plik = fopen("Ksiazka_telefoniczna.txt","w+");
- for (; NULL != front; front = front->next)
- {
- fprintf(plik,"ID:%d\n",front->ID);
- fprintf(plik,"Imie:%s\n",front->imie);
- fprintf(plik,"Nazwisko:%s\n",front->nazwisko);
- fprintf(plik,"Ulica:%s\n",front->ulica);
- fprintf(plik,"Numer domu:%s\n",front->numer_domu);
- fprintf(plik,"Miasto:%s\n",front->miasto);
- fprintf(plik,"Kod pocztowy:%s\n",front->kod_pocztowy);
- fprintf(plik,"E-Mail:%s\n",front->mail);
- fprintf(plik,"Telefon:%d\n\n",front->numer_telefonu);
- }
- printf("\n");
- fclose(plik);
- }
- struct ksiazka_telefoniczna *load_from_file_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front)
- {
- FILE *plik;
- plik = fopen("Ksiazka_telefoniczna.txt","r");
- if(plik == NULL)
- return front;
- char a;
- char ID[20];
- char nazwisko[20];
- char imie[20];
- char ulica[20];
- char numer_domu[20];
- char miasto[20];
- char kod_pocztowy[20];
- char mail[40];
- char telefon[20];
- memset(ID,0,sizeof(ID));
- memset(nazwisko,0,sizeof(ID));
- memset(imie,0,sizeof(ID));
- memset(ulica,0,sizeof(ID));
- memset(numer_domu,0,sizeof(ID));
- memset(miasto,0,sizeof(ID));
- memset(kod_pocztowy,0,sizeof(ID));
- memset(mail,0,sizeof(ID));
- memset(telefon,0,sizeof(ID));
- int line=0;
- while(!feof(plik))
- {
- fscanf(plik,"%c",&a);
- if(line==0&&a==':')
- line=1;
- if(line)
- {
- if(ID[0] == 0)
- {
- fgets(ID,20,plik);
- }
- else if(imie[0] == 0)
- {
- fgets(imie,20,plik);
- int len = strlen(imie);
- imie[len-1] = 0;
- }
- else if(nazwisko[0] == 0)
- {
- fgets(nazwisko,20,plik);
- int len = strlen(nazwisko);
- nazwisko[len-1] = 0;
- }
- else if(ulica[0] == 0)
- {
- fgets(ulica,20,plik);
- int len = strlen(ulica);
- ulica[len-1] = 0;
- }
- else if(numer_domu[0] == 0)
- {
- fgets(numer_domu,20,plik);
- int len = strlen(numer_domu);
- numer_domu[len-1] = 0;
- }
- else if(miasto[0] == 0)
- {
- fgets(miasto,20,plik);
- int len = strlen(miasto);
- miasto[len-1] = 0;
- }
- else if(kod_pocztowy[0] == 0)
- {
- fgets(kod_pocztowy,20,plik);
- int len = strlen(kod_pocztowy);
- kod_pocztowy[len-1] = 0;
- }
- else if(mail[0] == 0)
- {
- fgets(mail,40,plik);
- int len = strlen(mail);
- mail[len-1] = 0;
- }
- else if(telefon[0] == 0)
- {
- fgets(telefon,20,plik);
- if(front == NULL)
- front = create_list_ksiazka_telefoniczna(atoi(ID),imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,atoi(telefon),mail);
- else
- front = insert_node_ksiazka_telefoniczna(front,atoi(ID),imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,atoi(telefon),mail);
- memset(ID,0,sizeof(ID));
- memset(imie,0,sizeof(imie));
- memset(nazwisko,0,sizeof(nazwisko));
- memset(ulica,0,sizeof(ulica));
- memset(numer_domu,0,sizeof(numer_domu));
- memset(miasto,0,sizeof(miasto));
- memset(kod_pocztowy,0,sizeof(kod_pocztowy));
- memset(mail,0,sizeof(mail));
- memset(telefon,0,sizeof(telefon));
- }
- }
- if(a==':'||a=='\n')
- line=0;
- }
- fclose(plik);
- return front;
- }
- void print_ksiazka_telefoniczna(struct ksiazka_telefoniczna *front)
- {
- for (; NULL != front; front = front->next)
- {
- printf("\nID: %d\n",front->ID);
- printf("Imie: %s\n",front->imie);
- printf("Nazwisko: %s\n",front->nazwisko);
- printf("Ulica: %s\n",front->ulica);
- printf("Numer domu: %s\n",front->numer_domu);
- printf("Miasto: %s\n",front->miasto);
- printf("Kod pocztowy: %s\n",front->kod_pocztowy);
- printf("E-mail: %s\n",front->mail);
- printf("Telefon: %d\n\n",front->numer_telefonu);
- }
- puts("");
- }
- void edit_ksiazka_telefoniczna(struct ksiazka_telefoniczna *list_pointer,int ID, char imie[],char nazwisko[],char miasto[],char ulica[],char numer_domu[],char kod_pocztowy[],
- int numer_telefonu,char mail[])
- {
- for (; NULL != list_pointer; list_pointer = list_pointer->next)
- {
- if(list_pointer->ID == ID)
- {
- strcpy(list_pointer->imie,imie);
- strcpy(list_pointer->nazwisko,nazwisko);
- strcpy(list_pointer->miasto,miasto);
- strcpy(list_pointer->ulica,ulica);
- strcpy(list_pointer->numer_domu,numer_domu);
- strcpy(list_pointer->kod_pocztowy,kod_pocztowy);
- strcpy(list_pointer->mail,mail);
- list_pointer->numer_telefonu=numer_telefonu;
- //strcpy(list_pointer->wojewodztwo,wojewodztwo);
- break;
- }
- }
- }
- int main()
- {
- struct ksiazka_telefoniczna *ksiazka_front = NULL;
- int ID;
- int wybor;
- char imie[40];
- char nazwisko[40];
- char ulica[40];
- char numer_domu[40];
- char miasto[40];
- char kod_pocztowy[40];
- //char wojewodztwo[40];
- int numer_telefonu;
- char mail[30];
- char bezpieczny[10];
- double start,end;
- ksiazka_front = load_from_file_ksiazka_telefoniczna(ksiazka_front);
- /*
- 1)Dodawanie nowego kontaktu
- 2)Losowe dodawanie kontaktow
- 2)Usuwanie wybranego kontaktu
- 3)Edycja wybranego kontaktu
- 4)Wyswietlanie wszystkich kontatkow
- 5)Sortowanie
- -QUICKSORT PO WSZYSTKICH ELEMENTACH ROSNACO/MALEJACO
- -Wykaz, ze QUICKSORT jest sortowaniem niestabilnym
- -Wykaz, ze HEAPSORT jest sortowaniem niestabilnym
- -HEAPSORT PO WSZYSTKICH ELEMENTACH ROSNACO/MALEJACO
- //dokonaj analizy przesuniec, porownan, oraz czasu wykonywanie algorytmow
- 6) Analiza uzyskanych wynikow.
- 7) Koniec pracy programu
- */
- do
- {
- menu_glowne:
- do
- {
- system("cls");
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
- puts("--------------------");
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
- puts("KSIAZKA TELEFONICZNA");
- puts("--------------------");
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- puts("\n1) Dodawanie nowego kontaktu");
- puts("2) Usuniecie wybranego kontaktu");
- puts("3) Edycja wybranego kontaktu");
- puts("4) Wyswietlanie wszystkich kontatkow");
- puts("5) Sortowanie");
- puts("6) Analiza uzyskanych wynikow.");
- puts("7) Koniec pracy programu");
- scanf("%s", bezpieczny);
- }while (atoi(bezpieczny) == 0);
- wybor = atoi(bezpieczny);
- switch(wybor)
- {
- case 1://Dodawanie nowego kontaktu
- {
- system("cls");
- puts("3) Dodawanie nowego kontaktu\n");
- wprowadz_dane_ksiazka_telefoniczna(imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,&numer_telefonu,mail);
- if(ksiazka_front == NULL)
- {
- ID = 1;
- ksiazka_front = create_list_ksiazka_telefoniczna(ID,imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,numer_telefonu,mail);
- }
- else
- {
- ID = ustal_najwieksze_ID_ksiazka_telefoniczna(ksiazka_front)+1;
- ksiazka_front = insert_node_ksiazka_telefoniczna(ksiazka_front,ID,imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,numer_telefonu,mail);
- }
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- puts("DODANO KONTAKT");
- system("PAUSE");
- break;
- }
- case 2://Usuniecie wybranego kontaktu
- {
- system("cls");
- puts("3) Usuniecie wybranego kontaktu\n");
- if (ksiazka_front == NULL) {
- puts("Lista jest pusta");
- system("PAUSE");
- break;
- }
- usuwanie_kontakt:
- do
- {
- system("cls");
- puts("3) Usuniecie wybranego kontaktu\n");
- puts("1) Wyswietl cala liste kontaktow");
- puts("2) Wprowadz numer ID kontaktu");
- puts("9) Poprzednie menu");
- scanf("%s", bezpieczny);
- }while(atoi(bezpieczny) == 0);
- wybor = atoi(bezpieczny);
- switch(wybor)
- {
- case 1:
- {
- system("cls");
- print_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- goto usuwanie_kontakt;
- }
- case 2:
- {
- system("cls");
- do
- {
- printf("-------------------------------\nPodaj numer ID kontaktu do usuniecia: ");
- scanf("%s",bezpieczny);
- }while (atoi(bezpieczny) == 0);
- ID = atoi(bezpieczny);
- if (!sprawdz_numer_ID(ksiazka_front,ID))
- {
- puts("Brak kontkatu o takim ID");
- system("PAUSE");
- goto usuwanie_kontakt;
- }
- delete_node_ksiazka_telefoniczna(&ksiazka_front,ID);
- zmiana_numeracji(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- puts("Usunieto kontakt");
- system("PAUSE");
- break;
- }
- case 9:
- {
- goto menu_glowne;
- }
- default:
- {
- goto usuwanie_kontakt;
- }
- }
- break;
- }
- case 3://Edycja wybranego kontaktu
- {
- system("cls");
- puts("3) Edycja wybranego kontaktu\n");
- if (ksiazka_front == NULL) {
- puts("Lista jest pusta");
- system("PAUSE");
- break;
- }
- edycja_kontakt:
- do
- {
- system("cls");
- puts("3) Edycja wybranego kontaktu\n");
- puts("1) Wyswietl cala liste kontaktow");
- puts("2) Wprowadz numer ID kontaktu");
- puts("9) Poprzednie menu");
- scanf("%s", bezpieczny);
- }while(atoi(bezpieczny) == 0);
- wybor = atoi(bezpieczny);
- switch(wybor)
- {
- case 1:
- {
- system("cls");
- print_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- goto edycja_kontakt;
- }
- case 2:
- {
- system("cls");
- do
- {
- printf("-------------------------------\nPodaj numer ID kontaktu do edycji: ");
- scanf("%s",bezpieczny);
- }while (atoi(bezpieczny) == 0);
- ID = atoi(bezpieczny);
- if (!sprawdz_numer_ID(ksiazka_front,ID))
- {
- puts("Brak kontkatu o takim ID");
- system("PAUSE");
- goto edycja_kontakt;
- }
- wprowadz_dane_ksiazka_telefoniczna(imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,&numer_telefonu,mail);
- edit_ksiazka_telefoniczna(ksiazka_front,ID,imie,nazwisko,miasto,ulica,numer_domu,kod_pocztowy,numer_telefonu,mail);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- puts("EDYTOWANO KONTAKT");
- system("PAUSE");
- break;
- }
- case 9:
- {
- goto menu_glowne;
- }
- default:
- {
- goto edycja_kontakt;
- }
- }
- break;
- }
- case 4://Wyswietlanie wszystkich kontaktow
- {
- system("cls");
- print_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 5:
- {
- system("cls");
- puts("5) Sortowanie\n");
- if (ksiazka_front == NULL) {
- puts("Lista jest pusta");
- system("PAUSE");
- break;
- }
- do
- {
- system("cls");
- puts("5) Sortowanie\n");
- puts("1) QUICKSORT");
- puts("2) HEAPSORT");
- puts("3) Wykaz, ze QUICKSORT jest sortowaniem niestabilnym");
- puts("4) Wykaz, ze HEAPSORT jest sortowaniem niestabilnym");
- puts("9) Poprzednie menu");
- scanf("%s", bezpieczny);
- }while(atoi(bezpieczny) == 0);
- wybor = atoi(bezpieczny);
- switch(wybor)
- {
- case 1:
- {
- do
- {
- system("cls");
- puts("1) Sortowanie po ID ROSNACO");
- puts("2) Sortowanie po ID MALEJACO");
- puts("3) Sortowanie po imieniu ROSNACO");
- puts("4) Sortowanie po imieniu MALEJACO");
- puts("5) Sortowanie po nazwisku ROSNACO");
- puts("6) Sortowanie po nazwisku MALEJACO");
- puts("7) Sortowanie po ulicy ROSNACO");
- puts("8) Sortowanie po ulicy MALEJACO");
- puts("9) Sortowanie po numerze domu ROSNACO");
- puts("10) Sortowanie po numerze domu MALEJACO");
- puts("11) Sortowanie po miescie ROSNACO");
- puts("12) Sortowanie po miescie MALEJACO");
- puts("13) Sortowanie po kodzie pocztowym ROSNACO");
- puts("14) Sortowanie po kodzie pocztowym MALEJACO");
- puts("15) Sortowanie po mailu ROSNACO");
- puts("16) Sortowanie po mailu MALEJACO");
- puts("17) Sortowanie po telefonie ROSNACO");
- puts("18) Sortowanie po telefonie MALEJACO");
- puts("19) Poprzednie menu");
- scanf("%s", bezpieczny);
- }while(atoi(bezpieczny) == 0);
- wybor = atoi(bezpieczny);
- switch(wybor)
- {
- case 1:
- {
- start=obliczSekundy(clock());
- quickSort(ksiazka_front);
- end=obliczSekundy(clock());
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 2:
- {
- start=obliczSekundy(clock());
- quickSort_id_malejaco(ksiazka_front);
- end=obliczSekundy(clock());
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 3:
- {
- start=obliczSekundy(clock());
- quickSort_imie_rosnaco(ksiazka_front);
- end=obliczSekundy(clock());
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 4:
- {
- quickSort_imie_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 5:
- {
- quickSort_nazwisko_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 6:
- {
- quickSort_nazwisko_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 7:
- {
- quickSort_ulica_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 8:
- {
- quickSort_ulica_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 9:
- {
- quickSort_numer_domu_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 10:
- {
- quickSort_numer_domu_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 11:
- {
- quickSort_miasto_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 12:
- {
- quickSort_miasto_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 13:
- {
- quickSort_kod_pocztowy_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 14:
- {
- quickSort_kod_pocztowy_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 15:
- {
- quickSort_mail_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 16:
- {
- quickSort_mail_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 17:
- {
- quickSort_telefon_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 18:
- {
- quickSort_telefon_malejaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- save_to_file_ksiazka_telefoniczna(ksiazka_front);
- system("PAUSE");
- break;
- }
- case 19:
- {
- goto menu_glowne;
- }
- }
- break;
- }
- case 3:
- {
- quickSort_miasto_rosnaco(ksiazka_front);
- print_ksiazka_telefoniczna(ksiazka_front);
- struct list *proba_1 = ksiazka_front->next->next;
- struct list *proba_2 = ksiazka_front->next->next->next;
- quickSort_miasto_rosnaco(ksiazka_front);
- if(proba_1 != proba_2)
- {
- puts("WYSTAPILA ZAMIANA MIRJSCAMI POMIEDZY ID 3 I ID 4");
- }
- system("PAUSE");
- break;
- }
- }
- break;
- }
- case 6://analiza
- {
- printf("Czas podczas wykonywania quicksort wynosi %lf\n", end-start);
- printf("Srednia ilosc porownan %d\n", staty.porownania);
- printf("Srednia ilosc przesuniec %d\n", staty.przesuniecia);
- system("PAUSE");
- break;
- }
- case 7://Koniec pracy programu
- {
- return 0;
- }
- default:
- {
- goto menu_glowne;
- }
- }
- }while(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement