Algoritmos e
Estruturas de dados
Listas encadeadas estáticas
Prof. Dr. Fábio Rodrigues de la Rocha
(Listas encadeadas estáticas) 1 / 12
Listas
Listas estáticas x Listas estáticas
encadeadas
Anteriormente foi estudado o assunto de listas estáticas
que são armazenadas como vetores. Ou seja, tem seu
tamanho sempre fixo. Sobre estas listas foram realizadas
operações de consulta a elemento, pesquisa a elemento e
inserção de elementos. Vimos que as operações de
inserção poderiam ser de 2 tipos: Inserção desordenada e
ordenada. Para o caso da inserção ordenada, vimos que
era necessário realizar deslocamentos de elementos para
mantê-los em ordem.
(Listas encadeadas estáticas) 2 / 12
Listas
Listas estáticas x Listas estáticas
encadeadas
Agora, veremos como realizar inserções numa estrutura de
dados onde os elementos podem estar fisicamente
desordenados mas estarão logicamente ordenados.
(Listas encadeadas estáticas) 3 / 12
Listas
Listas estáticas x Listas estáticas
encadeadas
Agora, veremos como realizar inserções numa estrutura de
dados onde os elementos podem estar fisicamente
desordenados mas estarão logicamente ordenados.
(Listas encadeadas estáticas) 4 / 12
Listas
0 4
3 5 6
Em uso
Livre
Estado original
Depois de inserir o elemento 2
0 6
5
4
3
2
Foi necessario movimentar 4 elementos!
(Listas encadeadas estáticas) 5 / 12
Listas
Em uso
Livre
Inicio
3 0 6 5 4
Estado original
typedef struct {
int valor;
int prox;
}Tipo_Bloco;
typedef struct {
Tipo_Bloco vet[60];
}Tipo_Lista_estatica_encadeada;
int inicio; int livre;
(Listas encadeadas estáticas) 6 / 12
Listas
Em uso
Livre
livre = 0
inicio=−1
0 1 2 3 4 5
Operação inicializa
(Listas encadeadas estáticas) 7 / 12
Listas
Em uso
Livre
0 1 2 3 4 5
2 −1
inicio=0
livre = 1
Ações: consulta lista de blocos livres
pega o primeiro livre, atualiza a lista
escreve o elemento
Operação insere: valor 2
(Listas encadeadas estáticas) 8 / 12
Listas
Em uso
Livre
0 1 2 3 4 5
2
inicio=0
5
1 −1
livre = 2
Ações: consulta lista de blocos livres
pega o primeiro livre, atualiza a lista
escreve o elemento
Operação insere: valor 5
(Listas encadeadas estáticas) 9 / 12
Listas
Em uso
Livre
0 1 2 3 4 5
2
inicio=0
5 4
2
livre = 3
Ações: consulta lista de blocos livres
pega o primeiro livre, atualiza a lista
escreve o elemento
Operação insere: valor 4
(Listas encadeadas estáticas) 10 / 12
Listas
Em uso
Livre
0 1 2 3 4 5
2
inicio=0
5 4
2
livre = 2
Ações: localiza o bloco que sera eliminado
ajusta a lista
libera o bloco (colocando-o) na lista de livres
Operação remove o valor 4
(Listas encadeadas estáticas) 11 / 12
Listas
Implemente em C as rotinas insere_ordenado(),
pesquisa(), inicializa(), remove() e mostra()
(Listas encadeadas estáticas) 12 / 12

listas-encadeads-estaticas-fabio-rocha.pdf

  • 1.
    Algoritmos e Estruturas dedados Listas encadeadas estáticas Prof. Dr. Fábio Rodrigues de la Rocha (Listas encadeadas estáticas) 1 / 12
  • 2.
    Listas Listas estáticas xListas estáticas encadeadas Anteriormente foi estudado o assunto de listas estáticas que são armazenadas como vetores. Ou seja, tem seu tamanho sempre fixo. Sobre estas listas foram realizadas operações de consulta a elemento, pesquisa a elemento e inserção de elementos. Vimos que as operações de inserção poderiam ser de 2 tipos: Inserção desordenada e ordenada. Para o caso da inserção ordenada, vimos que era necessário realizar deslocamentos de elementos para mantê-los em ordem. (Listas encadeadas estáticas) 2 / 12
  • 3.
    Listas Listas estáticas xListas estáticas encadeadas Agora, veremos como realizar inserções numa estrutura de dados onde os elementos podem estar fisicamente desordenados mas estarão logicamente ordenados. (Listas encadeadas estáticas) 3 / 12
  • 4.
    Listas Listas estáticas xListas estáticas encadeadas Agora, veremos como realizar inserções numa estrutura de dados onde os elementos podem estar fisicamente desordenados mas estarão logicamente ordenados. (Listas encadeadas estáticas) 4 / 12
  • 5.
    Listas 0 4 3 56 Em uso Livre Estado original Depois de inserir o elemento 2 0 6 5 4 3 2 Foi necessario movimentar 4 elementos! (Listas encadeadas estáticas) 5 / 12
  • 6.
    Listas Em uso Livre Inicio 3 06 5 4 Estado original typedef struct { int valor; int prox; }Tipo_Bloco; typedef struct { Tipo_Bloco vet[60]; }Tipo_Lista_estatica_encadeada; int inicio; int livre; (Listas encadeadas estáticas) 6 / 12
  • 7.
    Listas Em uso Livre livre =0 inicio=−1 0 1 2 3 4 5 Operação inicializa (Listas encadeadas estáticas) 7 / 12
  • 8.
    Listas Em uso Livre 0 12 3 4 5 2 −1 inicio=0 livre = 1 Ações: consulta lista de blocos livres pega o primeiro livre, atualiza a lista escreve o elemento Operação insere: valor 2 (Listas encadeadas estáticas) 8 / 12
  • 9.
    Listas Em uso Livre 0 12 3 4 5 2 inicio=0 5 1 −1 livre = 2 Ações: consulta lista de blocos livres pega o primeiro livre, atualiza a lista escreve o elemento Operação insere: valor 5 (Listas encadeadas estáticas) 9 / 12
  • 10.
    Listas Em uso Livre 0 12 3 4 5 2 inicio=0 5 4 2 livre = 3 Ações: consulta lista de blocos livres pega o primeiro livre, atualiza a lista escreve o elemento Operação insere: valor 4 (Listas encadeadas estáticas) 10 / 12
  • 11.
    Listas Em uso Livre 0 12 3 4 5 2 inicio=0 5 4 2 livre = 2 Ações: localiza o bloco que sera eliminado ajusta a lista libera o bloco (colocando-o) na lista de livres Operação remove o valor 4 (Listas encadeadas estáticas) 11 / 12
  • 12.
    Listas Implemente em Cas rotinas insere_ordenado(), pesquisa(), inicializa(), remove() e mostra() (Listas encadeadas estáticas) 12 / 12