Monitor: José Gustavo Correia Nascimento
Orientador: Prof. Jose Solenir Lima Figueredo
O uso da pilha de chamadas (stack) para decompor problemas complexos em casos base e passos recursivos.
Cuidado com a condição de parada! Se ela for inalcançável, você terá um StackOverflowError. Sempre garanta que o estado da variável mude em direção ao caso base.
Comparação entre alocação estática (memória fixa) e o redimensionamento dinâmico da API Java Collections.
Arrays primitivos são blocos contíguos de tamanho fixo. No ArrayList, inserir ou remover no índice 0 exige um shift de O(n) em todos os outros elementos.
Parametrização de tipos para evitar castings explícitos e erros de tempo de execução.
Lembre-se do Type Erasure: o Java remove as informações de tipo genérico em tempo de execução. O compilador usa o Generics apenas para garantir segurança ANTES de rodar.
Estruturas onde cada nó conhece apenas o seu sucessor, permitindo alocação dinâmica não-contígua.
O maior risco é perder a referência da cabeça (head). Se você atualizar o ponteiro head sem salvar o próximo, você causará um NullPointerException e perderá toda a lista.
Uso de ponteiros bi-direcionais (prev/next) e nós sentinelas para navegação fluida em ambos os sentidos.
Ao inserir no meio, você precisa atualizar 4 ponteiros. A ordem dessas atribuições é crítica: se você desconectar um nó antes de salvar seu vizinho, a lista será quebrada.
Estruturas onde o último nó aponta de volta para o primeiro, eliminando o valor nulo do final da lista.
Loops infinitos! Como não há null, o loop while(atual != null) nunca para. Use uma referência inicial (ex: head) e pare quando atual.proximo == head.
Integrando Inteligência Artificial no seu fluxo de estudos de forma ética e eficiente.
Cole o erro (stacktrace) e pergunte: "Por que este erro acontece nesta linha?". Não peça o código corrigido, peça a explicação.
Peça: "Gere 5 cenários de teste para uma inserção em lista circular, incluindo casos de borda como lista vazia ou com um elemento".
Suba os PDFs das aulas do Prof. Solenir no NotebookLM para tirar dúvidas conceituais antes de começar a codificar.
Instrua a IA: "Atue como meu professor de ED1. Não me dê a resposta, faça perguntas que me ajudem a chegar na lógica da busca binária".