insert_word is now recursive

This commit is contained in:
nanometer5088
2023-04-20 12:49:40 -03:00
parent 5f74df5a09
commit fcb5aee4cb

View File

@@ -2,17 +2,24 @@
#include <ctype.h>
#include "dicionario.h"
// Função que insere uma nova palavra no dicionário de palavras
// Função que insere uma nova palavra no dicionário de palavras em ordem decrescente
void insert_word(char **dict, int *size, char *word) {
int i;
// Percorre o dicionário de palavras e copia a
// palavra para a posição seguinte do dicionário
for (i = *size-1; i >= 0 && strcmp(dict[i], word) < 0; i--) {
strcpy(dict[i+1], dict[i]);
if (*size == 0 || strcmp(word, dict[*size - 1]) < 0) {
dict[*size] = strdup(word); // adiciona a palavra no final do dicionário
(*size)++; // atualiza o tamanho do dicionário
return;
}
// Copia a nova palavra para a posição correta no dicionário
// e incrementa o tamanho do dicionário
strcpy(dict[i+1], word);
// Encontra a posição correta para inserir a palavra em ordem decrescente
int i = 0;
while (i < *size && strcmp(word, dict[i]) < 0) {
i++;
}
// Move as palavras maiores para a direita para abrir espaço para a nova palavra
for (int j = *size - 1; j >= i; j--) {
dict[j + 1] = dict[j];
}
// Insere a nova palavra
dict[i] = strdup(word);
(*size)++;
}
@@ -42,4 +49,4 @@ void to_lowercase(char *word) {
word[i] = tolower(word[i]);
i++;
}
}
}