Escolar Documentos
Profissional Documentos
Cultura Documentos
de Dados
Filas, Pilhas e Listas
Sumário
Desenvolvimento do material Filas, Pilhas e Listas
Miguel Carvalho
Para Início de Conversa... ................................................................................ 3
Objetivos ..................................................................................................... 3
1ª Edição 1. Filas e Filas de Prioridade .......................................................................... 4
Copyright © 2022, Afya.
2. Pilhas ..................................................................................................... 9
Nenhuma parte deste material poderá ser reproduzida,
transmitida e gravada, por qualquer meio eletrônico, 3. Listas Ordenadas e Listas não Ordenadas ............................................ 13
mecânico, por fotocópia e outros, sem a prévia
autorização, por escrito, da Afya. Referências ..................................................................................................... 17
Para Início de Conversa... Objetivos
Entenderemos o conceito de Fila, Pilha e Lista. Veremos que Fila é uma ▪ Entender os conceitos de Fila e Pilha;
estrutura de dados do tipo FIFO (First In, First Out) ou PEPS (Primeiro a ▪ Aplicar os conceitos de Fila, Pilha e Listas;
Entrar, Primeiro a Sair) e Pilha é uma estrutura do tipo LIFO (Last In, First ▪ Diferenciar as estruturas de dados: Fila, Pilha e Lista.
Out) ou UEPS (Último a Entrar, Primeiro a Sair). Uma Lista, por sua vez,
não segue nenhuma dessas duas regras, permitindo que sejam inseridos
e retirados elementos de qualquer posição.
Conforme vimos, em uma Pilha, as inserções e remoções são feitas na private No topo;
mesma extremidade, pois o último elemento inserido (topo) sempre será Na Pilha, podem ser realizadas as seguintes operações:
o primeiro a ser retirado.
Inserir/Empilhar (push)
} private No topo;
Listar public void push(String elemento) {
No novo = new No ( );
public void listar ( ) {
novo.elemento = elemento;
No aux = topo;
while (aux ! = null ) { novo.ant = topo;
System.out.println(aux.elemento); topo = novo;
aux = aux.ant; }
}
public String pop ( ) {
} if (topo ! = null) {
String elemento = topo. elemento;
topo = topo.ant
return elemento;
Analisando as operações da Pilha implementada, verificamos que a } else {
complexidade de inserção e remoção é O(1), pois essas duas operações return null;
são realizadas sobre o topo. Para listar os dados, a complexidade é O(n), }
pois foi utilizado um comando de repetição. }
3. Listas Ordenadas e Listas não Ordenadas de vários fatores, incluindo a análise de complexidade. Nem sempre é
vantajoso manter a ordenação dos elementos, sendo possível resolver
Na área da computação, é fundamental trabalhar com conjuntos de dados inúmeros problemas computacionais sem que os dados da Lista estejam
(coleções) para resolução de problemas computacionais. Segundo Ascêncio ordenados.
e Araújo (2010), esses conjuntos de dados podem ser organizados por
A Figura 4 representa o processo de inserção de uma Lista não ordenada,
meio de uma lista linear, na qual podem ser realizadas diversas operações,
como: inserir e excluir de elementos, buscar elementos, encontrar o maior utilizando a inserção no final como regra.
e menor elemento, contar elementos, alterar valores dos elementos e
também buscar os elementos sucessores e predecessores.
Para a implementação da classe ArrayList no método sort, utilizamos o Para a implementação da classe LinkedList no método sort, utilizamos o
seguinte código: seguinte código:
mport java.util.ArrayList; import java.util.Collections;
import java.util.Collections; import java.util.; ArrayList
Por fim, a estrutura de Lista não exige um critério único para inserir e
remover os elementos, permitindo que os elementos sejam inseridos e
removidos elementos em qualquer posição.
Referências
ASCÊNCIO, A. F. G.; ARAÚJO, G. S. de. Estruturas de dados: algoritmos,
análise da complexidade e implementações em Java e C/C++. São Paulo:
Pearson, 2010.