Buscar

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Aula 05
Listas
Rodolfo Carneiro Cavalcante
Universidade Federal de Alagoas – UFAL
Campus Arapiraca
8 de Maio de 2015
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 1 / 44
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 2 / 44
Introduc¸a˜o
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 3 / 44
Introduc¸a˜o
Introduc¸a˜o
Uma das formas mais simples de interligar elementos de um conjunto
Itens podem ser acessados e inseridos ou retirados de uma lista
Duas listas pode ser concatenadas para formar uma lista u´nica
Uma lista pode ser partida em duas ou mais listas
Lista linear
sequeˆncia de zero ou mais itens x1, x2, ..., xn, na qual xi de um
determinado tipo
n e´ o tamanho da lista
assumindo que n ≥ 1, x1 e´ o primeiro item da lista, e xn e´ o u´ltimo
item da lista
para 1 < k < n, xk e´ precedido por xk−1 e seguido por xk+1
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 4 / 44
Introduc¸a˜o
Introduc¸a˜o
TAD Lista
Conjunto de operac¸o˜es para uma lista depende de cada aplicac¸a˜o
Operac¸o˜es comuns:
criar lista vazia
verificar se a lista esta´ vazia
inserir novo item imediatamente apo´s o item xi
retirar o item xi
localizar o item xi para examinar e/ou alterar o conteu´do de seus
componentes
combinar duas ou mais listas em uma lista u´nica
partir uma lista em duas ou mais listas
fazer uma co´pia da lista linear
ordenar os itens da lista em ordem ascendente ou descendente, de
acordo com alguns de seus componentes
pesquisar a ocorreˆncia de um item com um valor particular em algum
de seus componentes
Imprimir os itens da lista na ordem e ocorreˆncia
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 5 / 44
Introduc¸a˜o
Introduc¸a˜o
Pilhas e filas sa˜o tipos especiais de listas lineares
Particularidades na implementac¸a˜o das operac¸o˜es de inserc¸a˜o e
retirada de elementos
Pilhas sa˜o listas lineares em que inserc¸o˜es, remoc¸o˜es e acessos a
elementos ocorrem em apenas uma das extremidades
Filas sa˜o listas lineares em que todas as inserc¸o˜es de novos elementos
sa˜o realizadas em uma das extremidades da lista e as remoc¸o˜es sa˜o
feitas na outra extremidade
Listas lineares tem inserc¸o˜es e retiradas em qualquer posic¸a˜o da lista
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 6 / 44
Introduc¸a˜o
Introduc¸a˜o
Da mesma forma que as filas e pilhas, existem va´rias estruturas de
dados que podem ser utilizadas para implementar listas lineares
Cada uma com suas vantagens e desvantagens
Durante o projeto de implementac¸a˜o de listas e´ importante identificar
as operac¸o˜es que sera˜o mais frequentes
Na˜o existe uma u´nica implementac¸a˜o eficiente para todas as
operac¸o˜es
Por exemplo, na˜o ha´ implementac¸a˜o eficiente para ambas as
operac¸o˜es a seguir:
1 ter acesso fa´cil ao item xi para i qualquer
2 inserir ou remover elementos em uma posic¸a˜o i qualquer
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 7 / 44
Introduc¸a˜o
Introduc¸a˜o
A operac¸a˜o 1 e´ mais eficiente com implementac¸a˜o por meio de
arranjos ou estruturas auto-referenciadas?
E a operac¸a˜o 2?
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 8 / 44
Introduc¸a˜o
Introduc¸a˜o
A operac¸a˜o 1 e´ mais eficiente com implementac¸a˜o por meio de
arranjos
Por meio da alocac¸a˜o sequencial em memo´ria, acessar um ı´ndice do
vetor e´ uma operac¸a˜o muito ra´pida
Se utilizarmos uma estrutura auto-referenciada, precisamos percorrer
todas as ce´lulas da estrutura ate´ a ce´lula i
Mas se eu precisar inserir um elemento em uma posic¸a˜o i qualquer
utilizando um array (operac¸a˜o 2)?
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 9 / 44
Introduc¸a˜o
Introduc¸a˜o
A operac¸a˜o 1 e´ mais eficiente com implementac¸a˜o por meio de
arranjos
Por meio da alocac¸a˜o sequencial em memo´ria, acessar um ı´ndice do
vetor e´ uma operac¸a˜o muito ra´pida
Se utilizarmos uma estrutura auto-referenciada, precisamos percorrer
todas as ce´lulas da estrutura ate´ a ce´lula i
Mas se eu precisar inserir um elemento em uma posic¸a˜o i qualquer
utilizando um array(operac¸a˜o 2)?
E´ preciso realocar todos os itens xk , k > i
Nesse caso, a implementac¸a˜o com estruturas auto-referenciadas e´ mais
eficiente
E´ preciso apenas criar uma nova ce´lula e fazer xi−1 apontar para xi e xi
apontar para xi+1
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 10 / 44
Implementac¸a˜o com Arranjos
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 11 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Itens da lista sa˜o armazenados em posic¸o˜es cont´ıguas de memo´ria
Lista pode ser percorrida em qualquer direc¸a˜o
Inserc¸a˜o de um novo item pode ser realizada apo´s o u´ltimo item com
custo constante
Assim como nas pilhas e filas
No entanto, a inserc¸a˜o de um novo item no meio da lista requer um
deslocamento de todos os itens localizados apo´s o ponto de inserc¸a˜o
Retirar um item do in´ıcio da lista requer um deslocamento de itens
para preencher o espac¸o deixado vazio
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 12 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Assim como nas implementac¸o˜es anteriores, um vetor e´ utilizado para
armazenar os itens da lista
Da mesma forma, e´ necessa´rio que esse vetor tenha tamanho
suficiente para comportar os itens da lista
Esse tamanho deve ser fixo ou na˜o deve precisar ser alterado com
frequeˆncia
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 13 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 1: Estrutura de dados Lista (arranjo)
template <class T>class Lista{
private:
T *itens;
int ultimo, maxTam;
public:
Lista(int maxTam);
bool vazia();
void imprime();
void insere(T item);
void insere(T item, int pos);
int pesquisa(T item);
T retira(int pos);
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 14 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
A estrutura que guarda a lista e´ um vetor
T* itens;
O ı´ndice ultimo guarda a ultima posic¸a˜o da lista + 1 unidade
O tamanho ma´ximo da lista (maxTam) e´ usado para indicar o limite
do vetor
Temos duas operac¸o˜es insere
uma para inserir um elemento no fim da lista – similar a uma fila
uma para inserir um elemento em uma posic¸a˜o arbitra´ria
Temos ainda a operac¸a˜o de pesquisar por um item na lista e retirar
um item de uma posic¸a˜o
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 15 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 2: Estrutura de dados Lista: criar Lista vazia
template <class T>Lista<T>::Lista(int maxTam){
this->maxTam = maxTam;
this->itens = new T[maxTam];
this->ultimo = 0;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 16 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
O construtor da classe Lista faz as devidas inicializac¸o˜es
a ultima posic¸a˜o da lista sera´ a posic¸a˜o 0
o tamanho ma´ximo sera´ passado como paraˆmetro para o construtor
o vetor itens e´ inicializado dinamicamente
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 17 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 3: Estrutura de dadoslista: verificar se esta´ vazia
template <class T> bool Lista<T>::vazia(){
return this->ultimo==0;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 18 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 4: Estrutura de dados lista: imprimir elementos
imprimir(){
se (nao vazia){
para i de 0 ate ultimo-1{
imprima(itens[i ]);
i++
}
senao
imprima(“lista vazia”);
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 19 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 5: Estrutura de dados lista: inserir elemento na u´ltima posic¸a˜o
insere(item){
se(ultimo == maxTam)
imprima(“lista cheia!”);
senao{
itens[ultimo] = item;
ultimo++;
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 20 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 6: Estrutura de dados lista: inserir elemento em posic¸a˜o ar-
bitra´ria
insere(item, pos){
se(ultimo == maxTam)
imprima(“lista cheia!”);
senao{
para i de ultimo − 1 ate pos + 1{
itens[i] = itens[i-1];
i−−;
}
itens[pos] = item;
ultimo++;
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 21 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
A inserc¸a˜o de um elemento na u´ltima posic¸a˜o e´ trivial
E´ preciso verificar se ha´ espac¸o vazio na lista
Insere o elemento na u´ltima posic¸a˜o
A inserc¸a˜o de um elemento em uma posic¸a˜o arbitra´ria exige o
deslocamento de todos os elementos apo´s a posic¸a˜o desejada para a
esquerda
Operac¸a˜o de alto custo quando a lista possui muitos elementos
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 22 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 7: Estrutura de dados lista: pesquisar elemento
pesquisa(item){
se(nao vazia()){
para i de 0 ate ultimo-1{
se (itens[i] == item)
retorne i;
i++;
}
}
retorne -1;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 23 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 8: Estrutura de dados lista: recuperar elemento em posic¸a˜o
arbitra´ria
retira(pos){
se (pos<ultimo){
item = itens[pos];
para i de pos ate ultimo-2;
itens[i] = itens[i+1];
i++;
ultimo−−;
retorne item;
}
retorne 0;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 24 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Assim como a operac¸a˜o de inserir um item em posic¸a˜o arbitra´ria, a
operac¸a˜o de remover um item de uma posic¸a˜o arbitra´ria requer o
deslocamento de todos os itens em posic¸o˜es subsequentes a posic¸a˜o
de retirada
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 25 / 44
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Considerac¸o˜es
Tem como vantagem a economia de memo´ria, pois os apontadores
sa˜o impl´ıcitos nessa estrutura
Na˜o ha´ necessidade de se guardar memo´ria na estrutura para
armazenar um ponteiro para a pro´xima posic¸a˜o da lista
Desvantagens:
custo para inserir ou retirar itens da lista – pode causar um
deslocamento de todos os itens, no pior caso
em aplicac¸o˜es em que na˜o existe previsa˜o sobre o crescimento da lista,
a utilizac¸a˜o de arranjos pode exigir a realocac¸a˜o de memo´ria
operac¸a˜o de alto custo em termos de tempo e memo´ria, pois e´ preciso
alocar uma nova a´rea com mais posic¸o˜es do que a atual e copiar todos
os itens para ela
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 26 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 27 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Tambe´m chamada de lista encadeada ou lista ligada
Cada item da lista conte´m a informac¸a˜o que e´ necessa´ria para
alcanc¸ar o pro´ximo item
Esta implementac¸a˜o permite utilizar posic¸o˜es na˜o cont´ıguas de
memo´ria
E´ poss´ıvel inserir e retirar elementos sem haver necessidade de
deslocar os itens seguintes da lista
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 28 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
a figura a seguir ilustra a representac¸a˜o dessa forma:
implementac¸a˜o
a estrutura de dados lista usando estruturas auto-referenciadas sa˜o
constitu´ıdas de ce´lulas
a classe Lista conte´m uma refereˆncia para a ce´lula da cabec¸a e uma
refereˆncia para armazenar a posic¸a˜o corrente na lista
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 29 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Para inserir um item no fim da lista
cria-se uma nova ce´lula xn para o item
faz a lista apontar para a nova ce´lula como sendo o fim da lista
faz essa nova ce´lula apontar para NULL
Para inserir um item em uma posic¸a˜o arbitra´ria i
cria-se uma nova ce´lula
faz a ce´lula xi−1 apontar para a nova ce´lula
faz a nova ce´lula apontar para a ce´lula xi
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 30 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 9: Estrutura de dados Lista: ce´lula
template <class T> class Celula{
public:
T item;
Celula* prox;
Celula(){
prox = NULL;
}
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 31 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 10: Estrutura de dados Lista
template <class T>class Lista{
private:
Celula<T> *primeiro, *ultimo;
public:
Lista();
bool vazia();
void imprime();
void insere(T item);
void insere(T item, int pos);
Celula<T>* pesquisa(T item);
T retira(int pos);
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 32 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 11: Estrutura de dados Lista: Construtor
template <class T>Lista<T>::Lista(){
this->primeiro = new Celula<T>;
this->ultimo = this->primeiro;
this->primeiro->prox = NULL;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 33 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 12: Estrutura de dados Lista: verificar se esta´ vazia
template <class T>bool Lista<T>::vazia(){
return this->primeiro == this->ultimo;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 34 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 13: Estrutura de dados Lista: imprimir elementos da lista
imprime(){
se(nao vazia){
Celula *p = primeiro->prox;
enquanto(p != Nulo){
imprima(p->item);
p = p->prox;
}
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 35 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 14: Estrutura de dados Lista: inserir elemento na u´ltima posic¸a˜o
insere(item){
ultimo->prox = new Celula();
ultimo = ultimo->prox;
ultimo->item = item;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 36 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 15: Estrutura de dados Lista: inserir elemento em posic¸a˜o ar-
bitra´ria
insere(item,pos){
Celula* p = primeiro->prox;
para i de 0 ate pos − 1{
p = p->prox;
i++;
}
Celula* aux = new Celula();
aux->item = item;
aux->prox = p->prox;
p->prox = aux;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 37 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 16: Estrutura de dados Lista: pesquisar item
pesquisa(item){
Celula* p = primeiro->prox;
enquanto(p != Nulo){
se(p->item==item)
return p;
else
p = p->prox;
}
retorne Nulo;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 38 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 17: Estrutura de dados Lista: retirar item
retirar(pos){
item = Nulo;
se(nao vazia){
Celula* p = primeiro;
para i de 0 ate pos{
p = p->prox;
i++;
}
Celula *q = p->prox;
item = q->item;
p->prox = q->prox;
delete q;
}
retorne item;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 39 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Considerac¸o˜es sobre estruturas auto-referenciadas
Esse tipo de implementac¸a˜o permite inserir ou retirar itens do meio
da lista a um custo baixo, aspecto importante quando a lista deve ser
mantida em ordem
Em aplicac¸o˜es em que na˜o existe previsa˜o sobre o crescimento da
lista, e´ conveniente usar listas encadeadas, dado que o tamanho
ma´ximo da lista na˜o precisa ser definido a priori
a maior desvantagem desse tipo de implementac¸a˜o e´ a utilizac¸a˜o de
memo´ria extra para armazenar as refereˆncias (os ponteiros prox)
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 40 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Exerc´ıcio
Questa˜o 1
Implemente uma func¸a˜o que recebe duas listas lineares
(implementadas com arranjo) e retorna a junc¸a˜o dessas duas listas
A operac¸a˜o de junc¸a˜o deve entrelac¸ar os elementos das duas listas da
seguinte forma:
seja l1 = {xl11, xl12, xl13, xl14} e l2 = {xl21, xl22, xl23, xl24}
a junc¸a˜o resultante seria l3 = {xl11, xl21, xl12, xl22, xl13, xl23, xl14, xl24}
Sejam as listas l1 = {1, 3, 5, 7} e l2 = {2, 4, 6, 8}, o resultado da
operac¸a˜o de junc¸a˜o sera´ l3 = {1, 2, 3, 4, 5, 6, 7, 8}
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 41 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Exerc´ıcio
Questa˜o 2
Implemente uma func¸a˜o que recebe um vetor de valores inteiros com
n elementos e construa uma lista encadeada armazenando os
elementos do vetor nos no´s da lista
Se for recebido o vetor v[5] = {3,8,1,7,2}, a func¸a˜o deve retornar
uma nova lista cujo primeiro no´ tem a informac¸a˜o 3, o segundo no´
tem a informac¸a˜o 8, e assim por diante.
Se o vetor tiver zero elementos, a func¸a˜o deve ter como valor de
retorno uma lista vazia
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 42 / 44
Implementac¸a˜o com Estruturas Auto-Referenciadas
Exerc´ıcio
Formato da entrega
Enviar atividade para o ambiente virtual
Envie os arquivos fontes (mesmo que apenas um) compactados com
rar ou zip, com o nome nome aluno1 e nome aluno2.zip
Exemplo: alunos Wilcklison Jonesclayson e Joilson dos Teclados
Arquivo zip: Wilcklison e Joilson.zip
O seu programa deve ser executado em uma ma´quina com Ubuntu
com compilador gcc(g++)
Se o arquivo na˜o esta´ compilando/executando, envie assim mesmo e
nos comenta´rios informe o problema e onde suspeita estar localizado
o problema no co´digo.
Sera´ descontado 10% da nota por cada hora de atraso.
Rodolfo Carneiro Cavalcante (UFAL) Aula 05Listas 8 de Maio de 2015 43 / 44
	Introdução
	Implementação com Arranjos
	Implementação com Estruturas Auto-Referenciadas