Você está na página 1de 6

Exerccios De Estrutura de Dados Resolvidos.

Por Ariadne Costa Gomes 1. Para que serve uma lista? Uma lista serve para interligar os elementos de um conjunto. 2. Quais operaes podem ser realizadas com uma lista? Podem ser realizadas com uma lista as seguintes operaes: Inserir, Retirar e Localizar. 3. Descreva sua facilidade durante a execuo de um programa. As listas so estruturas muito flexveis, porque podem crescer sem diminuir de tamanho durante a execuo de um programa, de acordo com a demanda. 4. Como podem ser as operaes com os itens na lista? Itens podem ser acenados, inseridos ou retirados de uma lista. 5. O que pode ser feito com uma lista muito grande ou duas listas pequenas? Duas listas podem ser concatenadas para formar uma lista nica, assim como uma lista pode ser partida em duas ou mais listas. 6. Quando aconselhvel o seu uso? Listas so adequadas para aplicaes nas quais no possvel prever a demanda por memria, permitindo a manipulao de quantidades imprevisveis de dados, de formato tambm imprevisvel. 7. Em que so teis s listas? Listas so teis em aplicaes tais como manipulao simblica, gerncia de memria, simulao e compiladores. 8. Como feita a definio em uma lista? Uma lista linear uma sequncia de zero ou mais itens, x1, x2....,xn, na qual x1 de um determinado item e xn representa o tamanho da lista linear. 9. Descreva sua propriedade principal: Sua principal propriedade estrutural envolve as posies relativas dos itens em uma dimenso. Assumindo n>=1, x1 o primeiro item da lista e xn o ltimo item da lista. xi precede xi+1 para i = 1, 2, , n 1

xi sucede xi1 para i = 2, 3, , n o elemento xi dito estar na i-sima posio da lista. 10. Das vrias estruturas que podem ser utilizadas, quais estudamos? Listas Lineares. 11. Descreva sobre os cinco pontos relacionados implementao de uma lista. 1. FLVazia(Lista). Faz a lista car vazia. 2. Insere(x, Lista). Insere x aps o ltimo item da lista. 3. Retira(p, Lista, x). Retorna o item x que est na posio p da lista, retirando-o da lista e deslocando os itens a partir da posio p+1 para as posies anteriores. 4. Vazia(Lista). Esta funo retorna true se lista vazia; seno retorna false. 5. Imprime(Lista). Imprime os itens da lista na ordem de ocorrncia. 12. Escreva a estrutura necessria para implementao de uma lista com arranjo. Os itens so armazenados em um array de tamanho suciente para armazenar a lista. O campo ltimo aponta para a posio seguinte a do ltimo elemento da lista. O i-simo item da lista est armazenado na i-sima posio do array, 1 i <ltimo. A constante MaxTam dene o tamanho mximo permitido para a lista. 13. Escreva as funes utilizadas para operar sobre a lista.

void FLVazia(TipoLista Lista) { Lista>Primeiro = INICIOARRANJO; Lista>Ultimo = Lista>Primeiro ; } int Vazia(TipoLista Lista) { return ( Lista .Primeiro == Lista .Ultimo ) ; } / Vazia / void Insere(TipoItem x , TipoLista Lista) { i f ( Lista > Ultimo > MAXTAM) pr int f ( "Lista esta cheia\n" ) ; else { Lista > Item[ Lista > Ultimo 1] = x; Lista > Ultimo++; } } / Insere / void Retira(TipoApontador p, TipoLista Lista , TipoItem Item) { int Aux; i f (Vazia(Lista ) | | p >= Lista > Ultimo) { pr int f ( "Erro : Posicao nao existe \n" ) ; return; } Item = Lista > Item[p 1]; Lista > Ultimo; for (Aux = p; Aux < Lista > Ultimo ; Aux++) Lista > Item[Aux 1] = Lista > Item[Aux] ; } / Retira / void Imprime(TipoLista Lista) { int Aux; for (Aux = Lista .Primeiro 1; Aux <= (Lista .Ultimo 2); Aux++) pr int f ( "%d\n" , Lista . Item[Aux] .Chave) ; } / Imprime / 14. Escreva as vantagens de utilizar listas com arranjos.

Economia de memria (os apontadores so implcitos nesta estrutura). 15. Escreva as desvantagens de utilizar listas com arranjos. custo para inserir ou retirar itens da lista, que pode causar um deslocamento de todos os itens, no pior caso; em aplicaes em que no existe previso sobre o crescimento da lista, a utilizao de arranjos em linguagens como o Pascal pode ser problemtica porque nesse caso o tamanho mximo da lista tem de ser denido em tempo de compilao. 16. Descreva a implementao de listas com apontadores. Cada item encadeado com o seguinte mediante uma varivel do tipo Apontador. Permite utilizar posies no contguas de memria. possvel inserir e retirar elementos sem necessidade de deslocar os itens seguintes da lista. H uma clula cabea para simplicar as operaes sobre a lista. 17. Escreva as estruturas necessrias para implementar listas com apontadores. typedef int TipoChave; typedef struct { TipoChave Chave; / outros componentes / } TipoItem; typedef struct TipoCelula TipoApontador ; typedef struct TipoCelula { TipoItem Item; TipoApontador Prox; } TipoCelula;

typedef struct { TipoApontador Primeiro , Ultimo; } TipoLista; A lista constituda de clulas. Cada clula contm um item da lista e um apontador para a clula seguinte. O registro TipoLista contm um apontador para a clula cabea e um apontador para a ltima clula da lista. 18. Escreva as funes necessrias para trabalha com listas utilizando apontadores. void FLVazia(TipoLista Lista) { Lista>Primeiro = (TipoApontador ) malloc(sizeof (TipoCelula ) ) ; Lista>Ultimo = Lista>Primeiro ; Lista>Primeiro>Prox = NULL; } int Vazia(TipoLista Lista) { return ( Lista .Primeiro == Lista .Ultimo ) ; } void Insere(TipoItem x , TipoLista Lista) { Lista>Ultimo>Prox = (TipoApontador ) malloc(sizeof (TipoCelula ) ) ; Lista>Ultimo = Lista>Ultimo>Prox; Lista>Ultimo>Item = x; Lista>Ultimo>Prox = NULL; } void Retira(TipoApontador p, TipoLista Lista , TipoItem Item) { /O item a ser retirado e o seguinte ao apontado por p/ TipoApontador q; i f (Vazia(Lista ) | | p == NULL | | p>Prox == NULL)

{ pr int f ( " Erro : Lista vazia ou posicao nao existe \n" ) ; return; } q = p>Prox; Item = q>Item; p>Prox = q>Prox; i f (p>Prox == NULL) Lista>Ultimo = p; free(q) ; } void Imprime(TipoLista Lista) { TipoApontador Aux; Aux = Lista .Primeiro>Prox; while (Aux != NULL) { pr int f ( "%d\n" , Aux >Item.Chave) ; Aux = Aux >Prox ; } } 19. Quais as vantagens de utilizar listas com apontadores? Permite inserir ou retirar itens do meio da lista a um custo constante (importante quando a lista tem de ser mantida em ordem). Bom para aplicaes em que no existe previso sobre o crescimento da lista (o tamanho mximo da lista no precisa ser denido a priori). 20. Qual a desvantagem de utilizar listas com apontadores? Utilizao de memria extra para armazenar os apontadores

Você também pode gostar