Estruturas de Dados / Programa¸c˜ ao 2 - COMP208 Lista de Exerc´ıcios - Listas
M´ arcio Ribeiro
Universidade Federal de Alagoas - UFAL Instituto de Computa¸c˜ ao - IC
20 de junho de 2013
As quest˜oes abaixo devem ser resolvidas utilizando o seguinte contrato:
/∗
L i n k e d L i s t . h
TAD para r e p r e s e n t a r uma L i s t a Encadeada .
∗/
typedef s t r u c t node Node ; Node∗ c r e a t e L i n k e d L i s t ( ) ;
Node∗ i n s e r t N o d e ( Node ∗node , i n t i t e m ) ; void p r i n t L i n k e d L i s t ( Node ∗f i r s t ) ; i n t isEmpty ( Node ∗f i r s t ) ;
Node∗ s e a r c h ( Node ∗f i r s t , i n t i t e m ) ; Node∗ removeNode ( Node ∗f i r s t , i n t i t e m ) ;
Quest˜ao 1. Dada duas listas encadeadas A e B, escreva uma fun¸c˜ao para verificar se B ´e um subconjunto de A.
Quest˜ao 2. Escreva uma fun¸c˜ao para inverter uma lista encadeada usando somente uma “passada” pela lista.
Quest˜ao 3. Suponha que um texto est´a armazenado em umarray onde cada posi¸c˜ao cont´em um caracter.
O texto pode conter os 256 caracteres da tabela ASCII. Escreva uma fun¸c˜ao para criar uma lista encadeada onde cada n´o possui o caracter e a sua frequˆencia no texto. Para esta quest˜ao, navegar pela lista que est´a sendo criada ´e proibido. Lembre-se que para inserir um n´o na lista, podemos ter O(1).
Quest˜ao 4. Escreva uma fun¸c˜ao que ordena em ordem crescente uma lista encadeada sem criar uma nova lista.
As quest˜oes abaixo devem ser resolvidas utilizando o seguinte contrato:
/∗
D o u b l y L i n k e d L i s t . h
TAD para r e p r e s e n t a r uma L i s t a Duplamente Encadeada .
∗/
typedef s t r u c t node Node ; Node∗ c r e a t e D o u b l y L i n k e d L i s t ( ) ;
Node∗ i n s e r t N o d e ( Node ∗node , i n t i t e m ) ;
void p r i n t D o u b l y L i n k e d L i s t F o r w a r d ( Node ∗f i r s t ) ; void p r i n t D o u b l y L i n k e d L i s t B a c k w a r d ( Node ∗l a s t ) ; i n t isEmpty ( Node ∗f i r s t ) ;
Node∗ s e a r c h ( Node ∗f i r s t , i n t i t e m ) ; Node∗ removeNode ( Node ∗f i r s t , i n t i t e m ) ;
Quest˜ao 1. Escreva uma fun¸c˜ao que cria uma lista duplamente encadeada circular.
Quest˜ao 2. Escreva uma fun¸c˜ao que ao receber um n´umero, cria um n´o e o insere de forma ordenada na lista. Guarde o ponteiro do elemento inserido para saber se na pr´oxima inser¸c˜ao vocˆe deve ir para a esquerda ou direita.
2