ESCOLA SECUNDÁRIA
HENRIQUES NOGUEIRA
Módulo 6 - Estruturas de Dados Dinâmicas
1
2021 - 2022
 Uma Fila, assim como uma pilha, é uma versão
mais restrita da lista encadeada.
 A Fila, tem um comportamento similar às filas reais
que encontramos no mundo real, como uma fila de
um banco, de um supermercado ou até mesmo do
cinema.
2
 Uma Fila remove nós somente
no início (cabeça) da fila e
insere nós somente no fim
(cauda)
 Por esta razão as Filas são
conhecidas como estruturas
de dados First-In (primeiro a
entrar) , First-Out (primeiro a
sair) – FIFO 3
Sintaxe da Classe Queue (fila)
Queue <tipo de dados> variável = instancia da classe Queue<tipo de dados>;
Exemplo:
Queue<string> alunos = new Queue<string>();
FILAS
Depois de inserir o Enqueue 10
FILAS
Depois de inserir o Enqueue 20
Depois de remover – Dequeue o 10
FILAS
Depois de remover – Dequeue o 10
8
 O C# tem um conjunto de classes para
trabalhar com listas.
 Essas classes implementam a interface IList e
a implementação mais popular é a lista
genérica, muitas vezes referida como List<T>.
 O T especifica o tipo de objetos contidos na
lista, que tem o benefício adicional do compilador
verificar e garantir que adiciona apenas objetos do
tipo correto à lista .
9
10
 A List é muito semelhante com a classe Array
 Portanto, List pode fazer muitas das mesmas coisas
que um Array .
 List é mais simples e fácil trabalhar.
 Por exemplo, não precisa de ter um tamanho fixo,
basta criá-la e expandirá automaticamente para se
ajustar à quantidade de itens que se adiciona.
 O Visual C# disponibiliza a classe LinkedList, que nos
permite criar listas duplamente encadeadas
11
Uma lista organiza os elementos numa estrutura em cadeia em que cada elemento aponta
para o próximo (listas ligadas) ou aponta para o próximo e para o anterior (listas
duplamente ligadas).
Ao contrário dos vetores e das estruturas anteriores os elementos da lista podem não
estar em espaços contíguos, ou seja, podem estar espalhados pela memória do
computador não sendo possível utilizar um simples índice para os referenciar como nos
vetores.
As listas podem implementar diferentes funções de inserção de dados bem como remoção
de dados, incluindo funções de pesquisa e ordenação.
Exemplo de uma lista ligada:
Neste exemplo podemos verificar que:
1. A lista começa por apresentar um ponteiro para o primeiro
elemento;
2. Cada elemento da lista, também conhecido por nó, é constituído
por duas partes: os dados e um ponteiro para o elemento
seguinte;
O último elemento da lista aponta para NULL.
A lista está
vazia quando
aponta para
NULL.
Inserir Dados/Elementos:
Para inserir um elemento na lista podemos implementar diferentes funções
mas os passos são mais ou menos os mesmos:
a) Criar um novo nó;
b) Procurar a posição onde inserir o nó na lista e ajustar os ponteiros.
Exemplo de inserção no início:
a) Criar o novo nó
b) Ponto de inserção é o início por isso o novo
nó passa a ser o primeiro:
Para inserir no final devemos percorrer a lista
até chegarmos ao NULL:
Muito Importante: Nestas estruturas temos de libertar os nós
individualmente! Exemplo de lista duplamente ligada:
 Neste primeiro exemplo vamos criar uma lista de
strings
19
List<string> listaNomes = new List<string>();
 Neste exemplo temos uma lista de um tipo primitivo a,
string. Mas a lista também pode conter tipos de
referência e instâncias de objetos .
 Adicionar agora elementos à lista é muito
fácil com o método Adicionar (Add):
 Add, adiciona elementos ao fim da lista.
listaNomes.Add(“João");
listaNomes.Add(“Francisco");
listaNomes.Add(“Carla");
 No entanto, tentarmos adicionar dados que
não sejam do tipo string, o compilador dará
erro.
20
 Também podemos criar uma lista e
adicionar elementos na mesma instrução:
List<string> listaNomes = new
List<string>()
{
"John Doe",
"Jane Doe",
"Joe Doe"
}; 21
 Também podemos adicionar vários elementos de
uma só vez com o método AddRange
 Primeiro colocamos os dados num array e depois
adicionamos o array
string[] b = new string[3];
b[0]=“Manuel”;
b[1]=“Maria”;
b[2]=“Sofia”;
listaNomes.AddRange(b);
22
Listas Encadeadas:
LinkedList<string> listaNomes = new LinkedList<string>();
LinkedListNode<string> No; // instância da classe LinkedList e a variável No do tipo
LinkedListNode que controla a posição do elemento na lista
 Para mostrar o conteúdo da lista
podemos usar o ciclo foreach.
foreach (tipo de elemento in listaNomes)
{
Bloco de código;
}
24
Exemplo ciclo Foreach

programacaosistemasinformacaoModulo_Modulo_6_P2.pptx

  • 1.
    ESCOLA SECUNDÁRIA HENRIQUES NOGUEIRA Módulo6 - Estruturas de Dados Dinâmicas 1 2021 - 2022
  • 2.
     Uma Fila,assim como uma pilha, é uma versão mais restrita da lista encadeada.  A Fila, tem um comportamento similar às filas reais que encontramos no mundo real, como uma fila de um banco, de um supermercado ou até mesmo do cinema. 2
  • 3.
     Uma Filaremove nós somente no início (cabeça) da fila e insere nós somente no fim (cauda)  Por esta razão as Filas são conhecidas como estruturas de dados First-In (primeiro a entrar) , First-Out (primeiro a sair) – FIFO 3
  • 4.
    Sintaxe da ClasseQueue (fila) Queue <tipo de dados> variável = instancia da classe Queue<tipo de dados>; Exemplo: Queue<string> alunos = new Queue<string>();
  • 5.
  • 6.
    FILAS Depois de inseriro Enqueue 20 Depois de remover – Dequeue o 10
  • 7.
    FILAS Depois de remover– Dequeue o 10
  • 8.
  • 9.
     O C#tem um conjunto de classes para trabalhar com listas.  Essas classes implementam a interface IList e a implementação mais popular é a lista genérica, muitas vezes referida como List<T>.  O T especifica o tipo de objetos contidos na lista, que tem o benefício adicional do compilador verificar e garantir que adiciona apenas objetos do tipo correto à lista . 9
  • 10.
  • 11.
     A Listé muito semelhante com a classe Array  Portanto, List pode fazer muitas das mesmas coisas que um Array .  List é mais simples e fácil trabalhar.  Por exemplo, não precisa de ter um tamanho fixo, basta criá-la e expandirá automaticamente para se ajustar à quantidade de itens que se adiciona.  O Visual C# disponibiliza a classe LinkedList, que nos permite criar listas duplamente encadeadas 11
  • 12.
    Uma lista organizaos elementos numa estrutura em cadeia em que cada elemento aponta para o próximo (listas ligadas) ou aponta para o próximo e para o anterior (listas duplamente ligadas). Ao contrário dos vetores e das estruturas anteriores os elementos da lista podem não estar em espaços contíguos, ou seja, podem estar espalhados pela memória do computador não sendo possível utilizar um simples índice para os referenciar como nos vetores. As listas podem implementar diferentes funções de inserção de dados bem como remoção de dados, incluindo funções de pesquisa e ordenação.
  • 13.
    Exemplo de umalista ligada: Neste exemplo podemos verificar que: 1. A lista começa por apresentar um ponteiro para o primeiro elemento; 2. Cada elemento da lista, também conhecido por nó, é constituído por duas partes: os dados e um ponteiro para o elemento seguinte; O último elemento da lista aponta para NULL. A lista está vazia quando aponta para NULL.
  • 14.
    Inserir Dados/Elementos: Para inserirum elemento na lista podemos implementar diferentes funções mas os passos são mais ou menos os mesmos: a) Criar um novo nó; b) Procurar a posição onde inserir o nó na lista e ajustar os ponteiros.
  • 15.
    Exemplo de inserçãono início: a) Criar o novo nó
  • 16.
    b) Ponto deinserção é o início por isso o novo nó passa a ser o primeiro:
  • 17.
    Para inserir nofinal devemos percorrer a lista até chegarmos ao NULL:
  • 18.
    Muito Importante: Nestasestruturas temos de libertar os nós individualmente! Exemplo de lista duplamente ligada:
  • 19.
     Neste primeiroexemplo vamos criar uma lista de strings 19 List<string> listaNomes = new List<string>();  Neste exemplo temos uma lista de um tipo primitivo a, string. Mas a lista também pode conter tipos de referência e instâncias de objetos .
  • 20.
     Adicionar agoraelementos à lista é muito fácil com o método Adicionar (Add):  Add, adiciona elementos ao fim da lista. listaNomes.Add(“João"); listaNomes.Add(“Francisco"); listaNomes.Add(“Carla");  No entanto, tentarmos adicionar dados que não sejam do tipo string, o compilador dará erro. 20
  • 21.
     Também podemoscriar uma lista e adicionar elementos na mesma instrução: List<string> listaNomes = new List<string>() { "John Doe", "Jane Doe", "Joe Doe" }; 21
  • 22.
     Também podemosadicionar vários elementos de uma só vez com o método AddRange  Primeiro colocamos os dados num array e depois adicionamos o array string[] b = new string[3]; b[0]=“Manuel”; b[1]=“Maria”; b[2]=“Sofia”; listaNomes.AddRange(b); 22
  • 23.
    Listas Encadeadas: LinkedList<string> listaNomes= new LinkedList<string>(); LinkedListNode<string> No; // instância da classe LinkedList e a variável No do tipo LinkedListNode que controla a posição do elemento na lista
  • 24.
     Para mostraro conteúdo da lista podemos usar o ciclo foreach. foreach (tipo de elemento in listaNomes) { Bloco de código; } 24
  • 25.