Estrutura de Dados I

Roteiro de aula — Listas Encadeadas

Protótipo de roteiro com explicação, perguntas, implementação parcial e exercício.

Para refletir

Algoritmos + Estruturas de Dados = Programas.

Niklaus Wirth, Algorithms + Data Structures = Programs, 1976

A otimização prematura é a raiz de todo o mal.

Donald Knuth
Antes de continuar

O que acontece se a poda vier depois do if (i == n)?

if (i == n) { imprime(); return; }
if (soma > limite) return;
Ver dica 1Esconder dica 1
Pense no que é impresso quando i == n.
Ver dica 2Esconder dica 2
Compare com uma folha cuja soma passou do limite justamente no último elemento.
Ver respostaEsconder resposta

A folha é impressa sem conferir a soma: um subconjunto que passou do limite no último elemento aparece na saída.

Pergunta

Qual a complexidade de inserir no início de uma lista encadeada?

Ver soluçãoEsconder solução
: só dois ponteiros mudam.
Pergunta 1

Qual a altura mínima de uma árvore binária com nós?

Ver respostaEsconder resposta
.
Pergunta 2: Desafio

Esta não tem dica nem resposta. Veja a Pergunta 1.

Pelo Teorema 1, todo grafo tem um número par de vértices de grau ímpar.

Definição 1(Grau)

O grau de um vértice , denotado , é o número de arestas incidentes em .

Teorema 1(Handshaking)

Em todo grafo , vale .

Demonstraçãotente antes de abrir

Cada aresta contribui com 1 para e com 1 para . Somando os graus de todos os vértices, cada aresta é contada exatamente duas vezes.

Corolário 1

Todo grafo tem um número par de vértices de grau ímpar.

Demonstraçãotente antes de abrir

A soma dos graus é par (Teorema 1). Os vértices de grau par contribuem com uma soma par; logo, a soma dos graus ímpares também é par, o que exige uma quantidade par de parcelas ímpares.

Teorema
Sem número.
Lema 1
Um lema qualquer, primeiro da página.
Teorema 2
O segundo teorema numerado.
Questão

Qual a complexidade da busca binária no pior caso, para um vetor com elementos?

Questão 2marque todas as corretas

Quais das funções abaixo são ?

Roteiro de aula — Listas Encadeadas

Inserção no fim de uma lista encadeadaC
Executa o seu código uma vez, com os dados de entrada abaixo. Serve para experimentar; não conta como resposta.Executa o seu código em todos os casos de teste (os de exemplo e os ocultos) e mostra quais passaram.
TAD: Nó de Lista EncadeadaC

Use note para destacar uma informação de apoio.

Use abstract para um resumo do que vem a seguir.

Use info para chamar atenção a uma informação importante.

Use tip para compartilhar uma dica útil.

Use check para indicar que algo foi concluído com sucesso.

Uma ideia ingênua para manter a árvore sempre balanceada seria...

Use warning para sinalizar um problema em potencial.

Use error para uma ação destrutiva ou de risco.

danger é um alias de error — mesma paleta, mesmo ícone.

warn é um alias de warning — mesma paleta, mesmo ícone.

Com título

Nota

Use note para destacar uma informação de apoio.

Resumo

Use abstract para um resumo do que vem a seguir.

Informação

Use info para chamar atenção a uma informação importante.

Dica

Use tip para compartilhar uma dica útil.

Concluído

Use check para indicar que algo foi concluído com sucesso.

Antes de continuar

Uma ideia ingênua para manter a árvore sempre balanceada seria...

Atenção

Use warning para sinalizar um problema em potencial.

Erro

Use error para uma ação destrutiva ou de risco.

Título customizado (diferente do padrão do tipo)

Prazo de entrega

O título não precisa repetir o nome do tipo — pode ser qualquer texto.

Cuidado com ponteiros soltos

Outro exemplo de título livre, usando a paleta de error.

Título vazio explícito (deve se comportar como "sem título")

Passar title="" deve cair no mesmo formato compacto de omitir a prop.

  1. 1

    First Step#

    These are instructions or content that only pertain to the first step.

  2. 2

    Second Step#

    These are instructions or content that only pertain to the second step.

  3. 3

    Third Step#

    These are instructions or content that only pertain to the third step.

Este protótipo representa o tipo de roteiro que pretendo usar nas aulas práticas:

  • explicação conceitual;
  • implementação parcialmente pronta;
  • perguntas para discussão;
  • perguntas com resposta escrita;
  • exercícios de implementação completa.

1. Modelo de um nó

Uma lista simplesmente encadeada pode ser representada por nós contendo um valor e um ponteiro para o próximo nó.

A complexidade de percorrer uma lista com nós é

Um nó pode ser declarado em C assim:

typedef struct No {
    int valor;
    struct No *prox;
} No;

#include <stdio.h>

int main(void) {
    printf("Olá, ED1!\n");
    return 0;
}

Nesta página