Vous êtes sur la page 1sur 5

Lista de Exerccios

Listas Ligadas (ou Encadeadas) e Listas Sequenciais


No deixe de ler o livro. Sugestes de livros:

Cormen - Introductions to Algorithms -O livro Cormen tem verses em portugus.

Nvio Ziviani - Projeto de Algoritmos - Com Implementao em Pascal e C.

Tenenbaum, Langsam, Augenstein - Estrutura de Dados em C

Marcus Laureano - Estrutura de Dados com Algoritmos em C.


Apostilas Online

http://www.dcc.ufrj.br/~francisco_vianna/livros/
Estruturas.de.Dados.Usando.C.-.Tenenbaum.pdf

http://www-usr.inf.ufsm.br/~juvizzotto/elc1067-2013b/estrut-dados-pucrio.pdf

http://www.mlaureano.org/livro/livro_estrutura_conta.pdf

http://www.esj.eti.br/Apostilas/EstruturasDeDados.pdf


1. Cite quais as vantagens de utilizarmos listas com estruturas ligadas ao invs
de estruturas sequenciais. Alm disso, em quais outras estruturas seria
vantajoso utilizar o modelo de estruturas ligadas, ao invs de sequencial?

2. Qual a diferena conceitual de uma lista para uma fila?










Para os prximos exerccios, vamos trabalhar com Listas Ligadas. Considere o
seguinte struct:

------------------------------------------------------------------------------------------------
--------------
3. Implemente uma funo de criar um n do tipo listaAlunos. O prottipo da
funo deve ser:
listaAlunos *criaNo(int ra, float n1, float n2);


4. Implemente uma funo de inserir elementos na lista ligada. Lembre-se, o seu
programa deve conter um ponteiro global para o incio da lista. Essa funo
deve conter a lgica de inserir um n de maneira ordenada pelo RA,
independente da posio em que ele v parar. O prottipo da funo deve
ser:
void insereNoLista(listaAlunos **li,listaAlunos *novoNo);
PS: Observe que o parmetro desta funo do mesmo tipo de retorno da
funo do exerccio 3. Logo, no decorrer do programa, essa funo deve ser
utilizada, passando como parmetro o resultado da funo criaNo.


5. Implemente uma funo de remover elementos na lista ligada. Essa funo
deve manter a lista ordenada ao remover um elemento, independente de sua
posio. O prottipo da funo deve ser:
void removeNoLista(listaAlunos **li,int ra);
PS: A funo deve imprimir uma mensagem de erro caso o ra ser removido
no exista.


6. Implemente uma funo iterativa que retorne a quantidade de alunos na lista
ligada, ou seja, que calcule o nmero de ns da lista. O prottipo da funo
deve ser:
int quantidadeNoLista(listaAlunos *li);
6. Implemente uma funo recursiva que retorne a quantidade de alunos na
lista ligada, ou seja, que calcule o nmero de ns da lista. O prottipo da
funo deve ser:
int quantidadeNoLista(listaAlunos *li);

7. Implemente uma funo iterativa que faa uma mdia aritmtica das notas
n1 e n2 dos alunos. Essa funo deve percorrer a lista ligada, aluno por
aluno, calcular a mdia. Faa-a se baseando no prottipo abaixo:


8. Implemente uma funo que, dado um determinado RA, imprima todos os
dados do n. Tente implement-la da maneira mais eficiente possvel,
impedindo buscas desnecessrias, por exemplo, se o primeiro RA 10, e
estamos buscando pelo 5, logo o RA 5 no existir na lista. Lembre-se que a
lista est ordenada.

O prottipo da funo deve ser:


PS: A funo deve imprimir uma mensagem de erro caso o ra buscado no
exista.

9. Implemente uma funo que retorne a mdia aritmtica de todos os alunos,
de 3 maneiras:
1 Retorne a mdia de todos os alunos na n1
2 Retorne a mdia de todos os alunos na n2
0 Retorne a mdia de todos os alunos na n1 e na n2: ((n1+n2)/2)

O prottipo da funo deve ser:
float mediaTotal(listaAlunos *li, int tipoDeMedia);
Onde o parmetro tipoDeMedia poder ter como valores 0, 1 ou 2. O retorno
ser a mdia calculada conforme o parmetro especificar.
10. Implemente uma funo para imprimir a lista. Essa funo ser muito
semelhante ao exerccio 7. O prottipo da funo deve ser:
void imprimeLista(listaAlunos *li);





------------------------------------------------------------------------------------------------
--------------
Para os prximos exerccios, considere a seguinte funo:


------------------------------------------------------------------------------------------------
--------------

11. Considerando a funo acima, qual estrutura de dados ela pertence?

12. Sobre tal estrutura de dado, qual sua principal diferena para a Lista Ligada
comum?

13. A funo acima utiliza o mesmo struct aluno do comeo da lista. Porm, quais
adequaes ele deve sofrer para se adaptar essa funo?

14. A funo acima est correta? Justifique.

15. Ao rodar a funo acima da maneira que est, quais problemas vo acontecer?
Justifique.

16. Faa correes que achar necessrias para o correto funcionamento da
funo.

17. Implemente uma funo de remoo para a estrutura acima. Essa funo deve
ordenar a Lista Duplamente Ligada ao remover um elemento.

Vous aimerez peut-être aussi