Baixe o app para aproveitar ainda mais
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, mostrandoos na tela; M: percorre a lista, mostrando os sapatos na tela; I: lê os dados de um novo sapato, inserindoo 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
Compartilhar