Buscar

Estrutura de Dados - Lista Exercícios A1

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

Prévia do material em texto

06/09/2017 Lista de Lista
http://equipe.nce.ufrj.br/meslin/alg2/Listas2006_1/Lista.htm 1/2
Lista de Lista
1. Faça uma função que receba duas listas desordenadas como parâmetros e (l1 e l2). A função
deve concatenar as duas listas, armazenando o resultado em l1. A lista l2 deve ficar vazia.
 
2. Faça uma função que receba 3 listas, sendo as duas primeiras (l1 e l2) preenchidas e
desordenadas e a terceira, l3, vazia. A função deve concatenar l1 e l2 em l3. As listas l1 e l2
devem ficar vazias.
 
3. Faça uma função que receba 3 listas, sendo as duas primeiras (l1 e l2) preenchidas em ordem
crescente e a terceira, l3, vazia. A função deve concatenar l1 e l2 em l3 mantendo a ordenação.
As listas l1 e l2 devem ficar vazias.
 
4. Faça uma função que receba 3 listas, sendo as duas primeiras (l1 e l2) preenchidas em ordem
crescente e a terceira, l3, vazia. A função deve concatenar l1 e l2 em l3 mantendo a ordenação.
As listas l1 e l2 não devem ser alteradas.
 
5. Escreva o programa para fazer o controle dos sapatos de uma sapataria. Para cada sapato são
guardadas as seguintes informações: código, nome (do modelo), quantidades por tamanho (4
quantidades, uma para cada tamanho do 35 ate o 38) e ano. 
Inicialmente, construa uma lista de sapatos ordenada por código, sendo que essa lista deve ser
mantida ordenada já durante a sua construção. Em seguida, deve ser apresentado um menu de
opções, sendo lidas e tratadas as seguintes opções:
V: verifica se a lista esta ordenada por ano;
S: separa os sapatos da lista em duas novas listas, uma com os sapatos de ano <2000 e outra
com os sapatos de ano >= 2000, mostrando­os na tela;
M: percorre a lista, mostrando os sapatos na tela;
I: lê os dados de um novo sapato, inserindo­o na lista;
R: lê um código de sapato, retira o sapato correspondente da lista, e apresenta as informações do
sapato retirado na tela;
F: fim.
 
6. Estenda o tipo de dados Listas para realizar as seguintes operações:
a. proximo(): retorna a posição seguinte à posição p na lista L. Se p é a última posição na
lista então proximo(p,L) será o último nó da lista. A função proximo() é indefinida se p é
a última posição na lista ou se a a lista está vazia.
b. anterior(): retorna a posição anterior à posição p na lista L. A função anterior() é
indefinida se p = 1 ou se a lista não possuir posição p.
c. intercala(): combina duas listas L1 e L2 (não classificadas), criando uma lista L onde os
elementos são intercalados, ou seja, cada elemento de L é um elemento de L1 seguido de
1 elemento de L2 e assim por diante. L1 e L2 não precisam ser do mesmo tamanho.
d. removeDuplicata(): remove da lista L todos os elementos repetidos. Retorna 1 caso tenha
sucesso na remoção e 0 caso não haja elementos duplicados na lista. Realize esta
operação para cada um dos tipos de listas
e. merge: que que recebe duas listas (ordenadas) e faz a união classificada dessas listas,
retornando a lista resultante. Ambas as lista são sem repetição e a resultante também o
deve ser.
 
7. Considere as seguintes definições de tipos:
#define MAX 100 /* máximo de elementos na lista */
06/09/2017 Lista de Lista
http://equipe.nce.ufrj.br/meslin/alg2/Listas2006_1/Lista.htm 2/2
typedef struct t_elemento
 { 
   int valor; 
   char rótulo;
   int info;
 } t_elem; 
 
typedef struct t_tipo_lista
 { 
   t_elem elem[MAX];
   int num;
 }t_lista;
  
a. Escreva em C a função verificaOrdenada( ) que recebe uma lista do tipo acima e retorna
1, se os elementos estão ordenados por valor, ou 0, caso contrário.
b. Escreva a função merge() que recebe duas listas (ordenadas) e faz o merge dessas listas,
retornando a lista resultante. As lista originais devem ficar vazias.
c. Escreva a função separa( ) que recebe uma lista e separa essa lista em duas outras listas,
de acordo com o campo rótulo. Elementos com rótulo A ou D ficam numa das listas e os
demais na outra.
d. Escreva em C a função recursiva inverteLista( ) que inverte uma lista do tipo t_lista. A
função deve receber como parâmetro o vetor onde estão os elementos e o início e o fim
do intervalo considerado.
 
8. Escreva em C a função recursiva cont_men( ) que retorna a média dos elementos de uma lista
de inteiros e o número de elementos maiores do que a média.
 
9. Dada uma lista ordenada, escreva as seguintes funções
a. verifique se a lista está ordenada e retorna 0 se estiver desordenada, ­1 se em ordem
decrescente ou 1 se em ordem crescente.
b. copia a lista em outra lista também recebida como parâmetro, inicialmente vazia
c. copia a lista em outra lista também recebida como parâmetro, inicialmente vazia,
eliminando repetidos
d. inverte a lista armazenando o resultado em outra lista inicialmente vazia recebida como
parâmetro
e. inverte a lista armazenando o resultado na própria lista
f. gera uma lista também recebida como parâmetro, inicialmente vazia, onde cada registro
contém, além dos dados da primeira lista, um campo inteiro representando a quantidade
de vezes que o elemento apareceu na lista
g. elimina da lista todas as ocorrências de um dado elemento. Considere a lista desordenada
h. elimina da lista todas as ocorrências de um dado elemento. Considere a lista ordenada

Outros materiais