diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..cfa69a413513c8b72233bbe9c5a626433a05a628 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +all: t2.c + gcc t2.c -o mydht -Wall -lm +purge: + rm -f mydht diff --git a/a.out b/a.out deleted file mode 100644 index 427dc8639b9c9300cda49e4a4301f993551e324b..0000000000000000000000000000000000000000 Binary files a/a.out and /dev/null differ diff --git a/t2.c b/t2.c index ae0d0b0c7934b97d78de85a8958acbe931b1912a..89c079e0dc72eb346c44d9a2f85dcf205fd763c7 100644 --- a/t2.c +++ b/t2.c @@ -16,20 +16,15 @@ typedef struct Node { struct Node* prev; } Node; -typedef struct DHT { - Node* head; - int max_id; -} DHT; - void redistribute_keys(Node *dht, Node* new_node) { Node *start = dht; do { Node* current = new_node; - printf("Start:%d Next:%d\n", start->id, current->id); - printf("Start->key_count:%d\n", start->key_count); + // printf("Start:%d Next:%d\n", start->id, current->id); + // printf("Start->key_count:%d\n", start->key_count); //O novo nodo deve ter as chaves EXISTENTES que são maiores que o antecessor e menores ou iguais a ele for (int i = 0; i < start->key_count; i++) { - printf("Start->keys[%d]:%d\n", i, start->keys[i]); + // printf("Start->keys[%d]:%d\n", i, start->keys[i]); if (start->keys[i] > start->id && start->keys[i] <= current->id) { current->keys[current->key_count++] = start->keys[i]; start->keys[i] = 0; @@ -166,14 +161,14 @@ Node* remove_node(Node* head, int id) { // Função para calcular a tabela finger void calculate_finger_table(Node* head, int max_id) { Node* current = head; - printf("Max_id:%d\n", max_id); + // printf("Max_id:%d\n", max_id); int log2_max_id = ceil(log2(max_id)); - printf("Log2_max_id:%d\n", log2_max_id); + // printf("Log2_max_id:%d\n", log2_max_id); do { for (int k = 1; k <= log2_max_id; k++) { - printf("N:%d", current->id); - int finger_id = (current->id + (1 << k-1)) % (1 << log2_max_id); - printf(" Finger_id:%d\n", finger_id); + // printf("N:%d", current->id); + int finger_id = (current->id + (1 << (k-1))) % (1 << log2_max_id); + // printf(" Finger_id:%d\n", finger_id); Node* temp = head; //Inserir na tabela_finger o id do nó que é o menor id maior que o id do finger_id, ou seja, o id mais próximo do finger_id while(temp->id < finger_id && temp->next != head) { @@ -221,7 +216,7 @@ void print_finger_table_completa(Node* head, int timestamp) { // Função para realizar lookup de uma chave Node ** lookup(Node* head, int timestamp, int node_id, int key, int *num_nodes) { - printf("Lookup\n"); + // printf("Lookup\n"); Node* current = head; Node** nodes_involved = (Node**)malloc(TAM_MAX_FINGER * sizeof(Node*)); *num_nodes = 0; @@ -295,7 +290,7 @@ void insert_key(Node* head, int node_id, int key) { } current->keys[current->key_count++] = key; - printf("Chave %d inserida no nó %d\n", key, current->id); + // printf("Chave %d inserida no nó %d\n", key, current->id); } void imprime_chaves(Node* head) { diff --git a/teste1.in b/teste1.in new file mode 100644 index 0000000000000000000000000000000000000000..ce0be837c917b784e45b83340b99112ebf36de04 --- /dev/null +++ b/teste1.in @@ -0,0 +1,15 @@ +1 E 4 - +2 E 10 - +3 I 10 18 +4 E 20 - +5 E 14 - +6 S 4 - +7 E 28 - +8 L 10 18 +9 E 1 - +10 E 56 - +11 I 1 50 +12 S 56 - +13 E 52 - +14 E 42 - +15 L 10 50 \ No newline at end of file