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>();
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
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.
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