Pilhas, filas e listas encadeadas – ponteiros passo a passo

ComputaçãoAlgoritmos e resolução de problemasIdades 17–18

Carregando…

Usar com minha turma ✨ Personalizar com IA Relatar um problema

Empilhe e desempilhe em uma pilha, enfileire e desenfileire em filas lineares, circulares e de prioridade, e insira, remova e busque nós em uma lista encadeada, vendo os ponteiros top, front, rear e head e os enlaces next mudarem linha a linha em Python ou pseudocódigo, com estouro e esvaziamento. Compare implementações com vetor estático e com nós e ponteiros dinâmicos, incluindo o uso de memória, e experimente aplicações: verificação de parênteses, desfazer/refazer, fila de impressão e pilha de chamadas.

Aula: Estruturas de dados abstratas: pilhas, filas e listas encadeadas; implementação com vetores e com ponteiros

O que mostra

Pilhas, filas e listas encadeadas são estruturas de dados abstratas. Uma pilha é «último a entrar, primeiro a sair»: push e pop atuam no topo. Uma fila é «primeiro a entrar, primeiro a sair»: os itens entram pelo fim e saem pela frente; uma fila circular reutiliza as células livres com MOD, e uma fila de prioridade atende primeiro a prioridade mais alta. Uma lista encadeada guarda cada valor em um nó com um ponteiro para o próximo e termina em um ponteiro nulo. Um vetor estático reserva um bloco fixo e pode estourar; nós dinâmicos crescem, mas gastam memória com ponteiros.

Como usar

Escolha Pilha, Fila, Lista encadeada ou Aplicações e uma Implementação. Digite um Valor e clique em uma operação como Empilhar, Enfileirar ou Inserir na posição; o código avança linha a linha na Velocidade escolhida. Marque Linha a linha e clique em Próxima linha para ir devagar, ou em Concluir operação. Observe os ponteiros, o painel Memória e o registro Operações.

Parâmetros que você pode mudar

  • Modo Pilha, Fila, Lista encadeada, Aplicações
  • Implementação Vetor estático, Nós e ponteiros (dinâmica)
  • Tipo de fila Linear, Circular, De prioridade
  • Capacidade do vetor 3–10 células
  • Aplicação Verificar parênteses (pilha), Desfazer / refazer (duas pilhas), Fila de impressão (fila), Pilha de chamadas
  • Linguagem Python, Pseudocódigo
  • Velocidade 0,5–5 linhas/s

Perguntas para explorar

  1. Por que uma fila linear pode ficar cheia com células vazias na frente, e como a fila circular resolve isso?
  2. Quais ponteiros mudam quando você insere um nó no meio de uma lista encadeada?
  3. Quantos bytes seis inteiros ocupam como vetor estático e como nós encadeados neste modelo?