Após cada operação solicitada pelo usuário, o sistema realizará a mesma ação em ambas as estruturas de dados (Lista Sequencial
e Lista Encadeada
) e exibirá um quadro comparativo de desempenho. A análise se baseia em duas métricas fundamentais de custo computacional:
Quantifica o esforço de busca e processamento do algoritmo. Esta métrica é incrementada toda vez que uma comparação lógica é executada para guiar o fluxo do programa.
if (rg == rg_procurado)
, verificações de laços como while (no_atual != NULL)
e o controle de contadores como for (i = 0; i < total; i++)
.Quantifica o esforço de manipulação e reorganização dos dados na memória.
Esta métrica representa o custo de copiar, mover ou vincular os nós da lista.
lista[i] = lista[i-1];
) durante inserções e remoções.no_anterior→proximo = novo_no;
), além das operações de alocação (malloc
) e liberação (free
) de memória.Esta análise permitirá observar na prática os pontos fortes e fracos de cada estrutura. Por exemplo, uma inserção no início de uma lista sequencial terá um M(n) altíssimo devido ao deslocamento de todos os outros elementos, enquanto na lista encadeada o custo será mínimo.
Esta tabela serve como um guia rápido das funções da biblioteca padrão C que são mais úteis para implementar as funcionalidades do projeto.
Biblioteca Padrão: <stdio.h> | Objetivo da Função |
---|---|
``printf()`` | Exibir informações formatadas na tela (menus, resultados, listas, etc.). |
``scanf()`` | Ler dados formatados digitados pelo usuário (opções do menu, números, etc.). |
``getchar()`` | Ler um único caractere do teclado. Muito útil para criar funções de limpeza de buffer. |
``fopen()`` | Abrir um arquivo em um modo específico (leitura “r” ou escrita “w”). |
``fclose()`` | Fechar um arquivo que foi aberto anteriormente, salvando as alterações. |
``fprintf()`` | Escrever dados formatados dentro de um arquivo. Perfeito para salvar no formato “nome,RG”. |
``fgets()`` | Ler uma linha inteira de texto de um arquivo. É a forma mais segura de ler os dados para a lista. |
``sscanf()`` | String Scan Formatted: Ler e extrair dados de uma string de acordo com um formato. Essencial para separar a linha “nome,RG” em duas variáveis distintas. |
``perror()`` | Exibir uma mensagem de erro padrão do sistema (ex: “Arquivo não encontrado”) quando uma operação falha. |
Biblioteca Padrão: <stdlib.h> | Objetivo da Função |
---|---|
``malloc()`` | Memory Allocate: Alocar um bloco de memória do tamanho especificado. Essencial para criar novos nós na lista encadeada. |
``free()`` | Liberar um bloco de memória que foi alocado com ``malloc()``, prevenindo vazamentos de memória. |
``atol()`` | ASCII to Long: Converter uma string de texto (lida do arquivo) em um número do tipo ``long int``. Ideal para o RG. |
``exit()`` | Terminar a execução do programa imediatamente. Pode ser usada em caso de um erro crítico. |
Biblioteca Padrão: <string.h> | Objetivo da Função |
---|---|
``strcpy()`` | String Copy: Copiar o conteúdo de uma string para outra. Útil para mover nomes lidos para dentro da struct. |
``strchr()`` | String Character: Localizar a primeira ocorrência de um caractere em uma string. Perfeito para encontrar a vírgula que separa o nome do RG. |
``strlen()`` | String Length: Retornar o comprimento de uma string (o número de caracteres). |
Biblioteca Padrão: <time.h> | Objetivo da Função |
---|---|
``clock()`` | Obter o número de “ticks” de clock do processador desde que o programa começou. Usada para medir o tempo de execução de uma operação. |