ae385f34c659d2bfc606a96abea458d8bc309a4895815c3330e214a466977e7e6083f0a330fab6c4bc2cd615a1376a02d1a5e40dbbc4511e954e7114659644d4
ae385f34c659d2bfc606a96abea458d8bc309a4895815c3330e214a466977e7e6083f0a330fab6c4bc2cd615a1376a02d1a5e40dbbc4511e954e7114659644d4
ae385f34c659d2bfc606a96abea458d8bc309a4895815c3330e214a466977e7e6083f0a330fab6c4bc2cd615a1376a02d1a5e40dbbc4511e954e7114659644d4
} Fila;
Fila* criarFila() {
// Função para verificar se a fila está vazia int estaVazia(Fila* fila) { return fila->frente == -1 &&
estaCheia(Fila* fila) {
// Função para adicionar um elemento à fila void enfileirar(Fila* fila, int valor) { if (estaCheia(fila)) {
// Verifica se a fila está cheia printf("A fila está cheia. Não é possível enfileirar %d\n", valor); //
}
if (estaVazia(fila)) { // Verifica se a fila está vazia
} else {
// Função para remover um elemento da fila void desenfileirar(Fila* fila, int quantidade) { if
(estaVazia(fila)) { // Verifica se a fila está vazia printf("A fila está vazia. Não é possível
desenfileirar\n"); // Exibe uma mensagem de erro return; // Retorna sem fazer nada
printf("A quantidade de elementos a desenfileirar deve ser maior que zero\n"); // Exibe uma
mensagem de erro
if (quantidade > (fila->fim - fila->frente + 1)) { // Verifica se a quantidade é maior que o número de
elementos na fila
for (int i = 0; i < quantidade; ++i) { // Loop para desenfileirar a quantidade especificada de
elementos printf("Desenfileirado: %d\n", fila->itens[fila->frente]); // Exibe o elemento
desenfileirado fila->frente = (fila->frente + 1) % TAMANHO_MAXIMO; // Atualiza o índice
da frente
printf("Fila: "); // Exibe uma mensagem indicando que os elementos da fila serão mostrados
int main() {
printf("3. Mostrar elemento da frente\n"); // Exibe opção para mostrar o elemento da frente da
fila
switch (opcao) { // Estrutura de controle switch para executar a opção escolhida pelo usuário
case 1: // Opção para enfileirar um elemento printf("Digite o valor a ser enfileirado: ");
// Solicita ao usuário que digite o valor scanf("%d", &valor); // Lê o valor a ser enfileirado
enfileirar(fila, valor); // Chama a função para enfileirar o valor na fila break; // Sai do
break; // Sai do switch default: // Caso a opção escolhida seja diferente das anteriores
} while (opcao != 0); // Continua o loop até que o usuário escolha a opção de sair
}
COMPARAÇÃO
1. Estrutura de dados:
Ambos os códigos implementam uma estrutura de fila, permitindo operações como inserção,
remoção e exibição de elementos.
2. Implementação:
O primeiro código utiliza uma abordagem com estrutura (struct) para representar a fila, enquanto o
segundo código usa uma estrutura de fila definida por typedef.
O primeiro código usa alocação dinâmica de memória para o array de elementos da fila (float
*dados), enquanto o segundo código usa um array estático (int itens[TAMANHO_MAXIMO])
3. Gerenciamento de Memória:
Ambos os códigos gerenciam a memória adequadamente, com o primeiro código utilizando malloc()
para alocar memória dinamicamente e o segundo código não requer alocação dinâmica de memória
para a fila em si.
4. Flexibilidade:
O meu código é um pouco mais flexível em termos de capacidade máxima da fila, pois utiliza uma
definição de macro (TAMANHO_MAXIMO) que pode ser facilmente modificada, enquanto o código
do professor requer uma mudança direta na declaração da fila.
5. Interface do Usuário:
Ambos os códigos fornecem uma interface de linha de comando para interação com a fila,
permitindo ao usuário inserir, remover e visualizar elementos da fila.
6. Saída de Mensagens:
7. Estrutura do Código:
O meu código está organizado em uma única função main() que contém todas as operações da fila,
enquanto o código do professor divide as operações em funções separadas (por exemplo,
enfileirar(), desenfileirar(), etc.