Você está na página 1de 7

Algoritmos e Estruturas de Dados II

Lista de Exerccios de Listas Lineares


Bacharelado em An alise de Sistemas, DCTUFMS, 20/4/2005
1 Listas lineares em aloca c ao seq uencial
1. Descreva os algoritmos de inserc ao e remoc ao de uma lista ordenada emalocac ao seq uen-
cial.
2. Sejam os seguintes algoritmos de busca emuma lista ordenada de tamanho n emalocac ao
seq uencial:
BUSCAORD
1
(L, n, x)
1: L[n + 1].chave x
2: i 1
3: enquanto L[i].chave < x fa ca
4: i i + 1
5: se i = n + 1 ou L[i].chave = x ent ao
6: devolva 1
7: sen ao
8: devolva i
BUSCAORD
2
(L, n, x)
1: se x L[n].chave ent ao
2: i 1
3: enquanto L[i].chave < x fa ca
4: i i + 1
5: se L[i].chave = x ent ao
6: devolva 1
7: sen ao
8: devolva i
9: sen ao
10: devolva 1
1
(a) Compare os algoritmos acima em termos do n umero total de operac oes realizadas e
de suas complexidades de tempo.
(b) Em que situac ao o desempenho dos dois e equivalente?
(c) Qual e a restric ao que o BUSCA-ORD
2
apresenta em relac ao ao BUSCA-ORD
1
?
3. Um deque e uma lista linear particular tal que as operac oes de inserc ao e remoc ao s ao
permitidas em qualquer extremidade da lista. Descreva algoritmos para um deque em
alocac ao seq uencial, considerenado:
(a) o algoritmo de inserc ao recebe como entrada o deque, o novo elemento a ser inserido
e a extremidade desejada E
1
ou E
2
;
(b) o algoritmo de remoc ao recebe o deque e a extremidade da remoc ao.
2 Listas lineares em aloca c ao encadeada
4. Se conhecemos apenas o apontador apt para um n o de uma lista linear em alocac ao
encadeada, como na gura 1 e nada mais e conhecido, como podemos modicar a lista
linear de modo que passe a conter apenas as chaves 20, 4, 19, 47, isto e, sem aquela do
n o apontado por apt ?
PSfrag replacements
apt
20 4 5 19 47
Figura 1:
5. O esquema apresentado na gura 2 permite percorrer uma lista linear simplesmente en-
cadeada nos 2 sentidos, utilizando apenas o atributo pr ox que cont em o endereco do
pr oximo elemento da lista. Utilizamos dois apontadores esq e dir , que apontam para
dois elementos vizinhos da lista. A id eia deste esquema e que ` a medida que os apontado-
res esq e dir caminham na lista, os campos prox s ao invertidos de maneira a permitir
o tr afego nos dois sentidos.
Escreva algoritmos para
(a) mover esq e dir para a direita de uma posic ao.
(b) mover esq e dir para a esquerda de uma posic ao.
6. Sejam duas listas, ordenadas, simplesmente encadeadas com n o-cabeca. Apresentar um
algoritmo que intercale as duas listas de forma que a lista resultante esteja tamb em orde-
nada.
7. Seja L uma lista simplesmente encadeada, com chaves l
1
, l
2
, . . . , l
n
, respectivamente, se-
gundo a ordem de armazenamento. Escreva um algoritmo que, percorrendo L um unica
vez, constr oi uma outra lista L, formada dos seguintes elementos:
2
PSfrag replacements
esq
esq
dir
dir

(i)
(ii)
Figura 2: A ilustrac ao (ii) foi obtida de (i) atrav es da execuc ao do algoritmo em (a) por tr es
vezes.
(a) l
2
, l
3
, . . . , l
n
, l
1
.
(b) l
n
, l
n1
, . . . , l
1
.
(c) l
1
+ l
n
, l
2
+ l
n1
, . . . , l
n/2
+ l
n/2+1
, onde n e par.
8. Seja um polin omio da forma p(x) = a
0
x
n
+a
1
x
n1
+. . .+a
n
x
0
. Represente p(x) atrav es de
uma lista encadeada conveniente e escreva algoritmos ecientes para efetuar as seguintes
operac oes, onde q(x) e um outro polin omio.
(a) Calcule p(x
0
), onde x
0
e um dado valor para x.
(b) Calcule p(q(x
0
)), onde x
0
e um dado valor para x.
(c) Obtenha p(x) + q(x).
(d) Obtenha p(x) q(x).
9. Suponha que uma frase e representada por uma lista linear encadeada, sendo que o
campo chave de cada n o da lista cont em um unico caracter ou smbolo. Escreva um
conjunto de procedimentos para manipular uma lista como essa, como segue
1
:
(a) Coverta a lista seq uencial F em uma lista encadeada, devolvendo o apontador para
o n o-cabeca da lista encadeada;
(b) Converta a lista encadeada apontada por apt em uma lista seq uencial F;
(c) Dados dois apontadores aptlista
1
e aptlista
2
, devolva um inteiro indicando a
posic ao de incio da primeira ocorr encia da segunda frase dentro da primeira frase.
Se a segunda frase n ao ocorre dentro da primeira, ent ao 1 e devolvido;
1
Considere aptlista 1, aptlista 2 e apt apontadores para n os-cabecas de listas representando frases, F um
vetor de caracteres ou smbolos e i1 e i2 inteiros.
3
(d) Dados dois apontadores aptlista
1
e aptlista
2
, devolva um inteiro indicando a
primeira posic ao da frase apontada por aptlista
1
que n ao est a contida na frase
apontada por aptlista
2
;
(e) Dados aptlista
1
, i
1
e i
2
, crie um lista encadeada com n o-cabeca, representando a
palavra que inicia em i
1
e termina emi
2
da frase apontada por aptlista
1
. Devolva
o apontador para o n o-cabeca da lista encadeada que representa a palavra. A lista
apontada por aptlista
1
n ao deve ser modicada;
(f) Dados aptlista
1
, i
1
, i
2
e aptlista
2
, os elementos da lista apontada por apt-
lista
2
devem ser substitudos por i
2
elementos da lista apontada por aptlista
1
,
comecando da posic ao i
1
. A lista apontada por aptlista
2
n ao deve ser modicada;
(g) Dados dois apontadores aptlista
1
e aptlista
2
, devolva 1 se a frase apontada
por aptlista
1
e menor que a frase apontada por aptlista
2
, 0 se s ao do mesmo
tamanho, e 1 se a frase apontada por aptlista
1
e maior.
10. Descreva os algoritmos de inserc ao e remoc ao em uma lista n ao ordenada, em alocac ao
encadeada.
11. Comparar algoritmos de busca, inserc ao e remoc ao em uma lista ordenada em alocac oes
seq uencial e encadeada.
3 Pilhas e las
12. (a) Escreva um algoritmo para apagar uma pilha em alocac ao encadeada, isto e, de-
volver todos os seus elementos ` a Lista de Espa co Disponvel.
(b) Suponha que a operac ao descrita acima ocorra commuita freq u encia. De que manei-
ra voc e modicaria a representac ao da pilha em alocac ao encadeada para acelerar a
operac ao?
13. Seja 1, 2, . . . , n uma seq u encia de elementos que ser ao inseridos e posteriormente remo-
vidos de uma pilha P uma vez cada. A ordem de inserc ao dos elementos na pilha e
1, 2, . . . , n enquanto a de remoc ao depende das operac oes realizadas.
Exemplo:
Com n = 3, a seq u encia de operac oes
incluir emP,
incluir emP,
remover de P,
incluir emP,
remover de P,
remover de P,
produzir a a permutac ao 2, 3, 1 a partir da entrada 1, 2, 3.
4
Representando por I e R, respectivamente, as operac oes de inserc ao e remoc ao da pi-
lha, a permutac ao 2, 3, 1 do exemplo acima pode ser denotada por IIRIRR. De modo ge-
ral, uma permutac ao e chamada admiss vel quando puder ser obtida mediante uma su-
cess ao de inserc oes e remoc oes em uma pilha a partir da permutac ao 1, 2, . . . , n. Assim, a
permutac ao 2, 3, 1 do exemplo acima e admissvel.
(a) Determine a permutac ao correspondente a IIIRRIRR, com n = 4.
(b) D e um exemplo de uma permutac ao n ao admissvel.
(c) Escreva a relac ao de permutac oes admissveis de 1, 2, 3, 4.
14. Repetir o exerccio anterior com uma la.
15. Um estacionamento possui um unico corredor que permite dispor 10 carros. Existe so-
mente uma unica entrada/sada do estacionamento em um dos extremos do corredor. Se
um cliente quer retirar um carro que n ao est a pr oximo ` a sada, todos os carros impedindo
sua passagem s ao retirados, o cliente retira seu carro e os outros carros s ao recolocados
na mesma ordem que estavam originalmente. Escreva um algoritmo que processa o uxo
de chegada/sada deste estacionamento. Cada entrada para o algoritmo cont em uma le-
tra E para entrada ou S para sada, e o n umero da placa do carro. Considere que os
carros chegam e saem pela ordem especicada na entrada. O algoritmo deve imprimir
uma mensagemsempre que um carro chega ou sai. Quando um carro chega, a mensagem
deve especicar se existe ou n ao vaga para o carro no estacionamento. Se n ao existe vaga,
o carro n ao entra no estacionamento e vai embora. Quando um carro sai do estaciona-
mento, a mensagem deve incluir o n umero de vezes que o carro foi movimentado para
fora da garagem, para permitir que outros carros pudessem sair.
16. Um estacionamento possui um unico corredor que permite dispor 10 carros. Os carros
chegam pelo sul do estacionamento e saem pelo norte. Se um cliente quer retirar um
carro que n ao est a pr oximo do extremo norte, todos os carros impedindo sua passagem
s ao retirados, o cliente retira seu carro e os outros carros s ao recolocados na mesma or-
dem que estavam originalmente. Sempre que um carro sai, todos os carros do sul s ao
movidos para frente, de modo que as vagas quem disponveis sempre no extremo sul
do estacionamento. Escreva um algoritmo que processa o uxo de chegada/sada deste
estacionamento. Cada entrada para o algoritmo cont em uma letra E para entrada ou S
para sada, e o n umero da placa do carro. Considere que os carros chegam e saem pela
ordem especicada na entrada. O algoritmo deve imprimir uma mensagem sempre que
um carro chega ou sai. Quando um carro chega, a mensagem deve especicar se existe
ou n ao vaga para o carro no estacionamento. Se n ao existe vaga, o carro deve esperar
at e que exista uma vaga, ou at e que uma instruc ao fornecida pelo usu ario indique que
o carro deve partir sem que entre no estacionamento. Quando uma vaga torna-se dis-
ponvel, outra mensagem deve ser impressa. Quando um carro sai do estacionamento, a
mensagem deve incluir o n umero de vezes que o carro foi movimentado dentro da gara-
gem, incluindo a sada mas n ao a chegada. Este n umero e 0 se o carro partiu da linha de
espera, isto e, se o carro esperava uma vaga, mas partiu sem entrar no estacionamento.
5
4 Listas lineares circulares
17. Considere duas listas circulares encadeadas, n ao vazias, apontadas por aptlista1 e
aptlista2 e o seguinte trecho de algoritmo:
apt aptlista1 .pr ox
aptlista1 .pr ox aptlista2 .pr ox
aptlista2 .pr ox apt
aptlista1 aptlista2
aptlista2
(a) Qual o resultado da execuc ao deste algoritmo?
(b) Qual o resultado se aptlista1 e aptlista2 apontam para dois elementos distin-
tos da mesma lista circular?
18. Descreva o algoritmo de alterac ao do campo chave de uma lista circular encadeada com
n o-cabeca.
19. A lenda conta que Josephus
2
n ao teria sobrevivido para tornar-se famoso se n ao fosse o
seu talento matem atico. Durante a guerra entre judeus e romanos, ele estava entre um
bando de 41 judeus rebeldes encurralados pelos romanos em uma caverna. N ao havia
esperanca de vencer os inimigos sem reforcos e existia um unico cavalo para escapar. Os
rebeldes zeram um pacto para determinar qual deles escaparia em busca de ajuda. Eles
formaram um crculo e, comecando a partir de um deles, comecaram a contar no sentido
hor ario em torno do crculo. Quando a contagem alcancava o n umero 3, aquele rebelde
era removido do crculo e a contagem recomecava a partir do pr oximo soldado, at e que
o ultimo soldado restasse no crculo. Este seria o soldado que tomaria o cavalo e fugiria
em busca de ajuda. Mas Josephus, com medo da morte iminente, calculou rapidamente
onde ele deveria estar neste crculo para que pudesse ser ele o ultimo soldado restante no
crculo.
Descreva um procedimento geral para solucionar o Problema de Josephus: dado um
n umero de soldados n e um n umero d n, que estabelece o n umero xo de remoc ao de
um elementos, determinar a ordem em que os soldados s ao eliminados do crculo e qual
deles escapar a.
2
Flavius Josephus, historiador famoso do primeiro s eculo.
6
5 Listas lineares duplamente encadeadas
20. Considere uma lista linear duplamente encadeada contendo os elementos x
1
, x
2
, . . . , x
n
,
como na gura 3.
PSfrag replacements

apt
x
1
x
2
x
n
Figura 3:
Escreva um algoritmo que altere os apontadores ant e pr ox da lista, sem mover suas
informac oes, tal que a lista que invertida como na gura 4.
PSfrag replacements

apt
x
n
x
n1
x
1
Figura 4:
7