Pilhas, filas e listas encadeadas – ponteiros passo a passo
ComputaçãoAlgoritmos e resolução de problemasIdades 17–18
Carregando…
Entre para usarEmpilhe 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
- Por que uma fila linear pode ficar cheia com células vazias na frente, e como a fila circular resolve isso?
- Quais ponteiros mudam quando você insere um nó no meio de uma lista encadeada?
- Quantos bytes seis inteiros ocupam como vetor estático e como nós encadeados neste modelo?