#include #include #include #include #include #include "bst.h" typedef struct timeval timeval; void dfsPrint(Node* root) { if(root == NULL) return; dfsPrint(root->left); dfsPrint(root->right); if(root->left == NULL && root->right == NULL) printf("%s", root->surname); // printf("%s %d\n", root->name, root); } // clocks double userTime; double sysTime; double realTime; clock_t start, end; struct timeval tv1, tv2; void startClock() { gettimeofday(&tv1, NULL); start = clock(); } void endClock() { gettimeofday(&tv2, NULL); end = clock(); userTime = (double) (tv2.tv_usec - tv1.tv_usec) / 1000000; sysTime = (double) (tv2.tv_sec - tv1.tv_sec) ; realTime = (end - start) / 1000000.0; } int main() { PhoneBook* pb = createPb(); pb->key = SURNAME; FILE* stream = fopen("data2.csv", "r"); char name[128]; char surname[128]; char birthday[128]; char phone[128]; char address[128]; char email[128]; Node nodes[1000]; int i; for(i=0; i<1000; i++) { fgets(name, 128, stream); fgets(surname, 128, stream); fgets(birthday, 128, stream); fgets(phone, 128, stream); fgets(address, 128, stream); fgets(email, 128, stream); Node* node = &(nodes[i]); node->name = malloc(sizeof(char)*(strlen(name)+1)); strcpy(node->name, name); node->surname = malloc(sizeof(char)*(strlen(surname)+1)); strcpy(node->surname, surname); node->birthday = malloc(sizeof(char)*(strlen(birthday)+1)); strcpy(node->birthday, birthday); node->phone = malloc(sizeof(char)*(strlen(phone)+1)); strcpy(node->phone, phone); node->email = malloc(sizeof(char)*(strlen(email)+1)); strcpy(node->email, email); node->address = malloc(sizeof(char)*(strlen(address)+1)); strcpy(node->address, address); //printf("%d %s %s %d\n", i, name, surname, strlen(address)); // } fclose(stream); startClock(); for(i=0; i<1000; i++) { Node* node = &nodes[i]; addNode(pb, node->name, node->surname, node->birthday, node->phone, node->email, node->address); } endClock(); printf("Czas budowy. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); startClock(); addNode(pb, "Joanna", "Wanna", "01.01.01", "123456789", "dzoana@wana", "Ulica costam"); endClock(); printf("Czas dodania elementu. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); Node* node = findNode(pb->root, pb->key, "Wanna"); startClock(); removeNode(&node); endClock(); printf("Czas usuwania elementu optymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); startClock(); node = findNode(pb->root, pb->key, "Frost"); removeNode(&node); endClock(); printf("Czas usuwania elementu pesymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); startClock(); findNode(pb->root, pb->key, "Jarvis"); endClock(); printf("Czas szukania elementu optymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); startClock(); findNode(pb->root, pb->key, "Zamora"); endClock(); printf("Czas szukania elementu pesymistycznie. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); startClock(); PhoneBook* newPb = rebuildPb(pb, BIRTHDAY); deletePb(pb); endClock(); printf("Czas przebudowy. \nUzytkowika: %f \nSystemowy: %f \nRzeczywisty: %f\n", userTime, sysTime, realTime ); // dfsPrint(pb->root); //printf("%s\n", pb->root->surname); return 0; }