Buscar

Os dados relativos a um grupo de atletas foram organizados em uma lista linear encadeada. O campo de informação de cada nodo desta lista apresenta ...

Os dados relativos a um grupo de atletas foram organizados em uma lista linear encadeada. O campo de informação de cada nodo desta lista apresenta o nome e a altura de um atleta , conforme exibido na implementação a seguir:

struct no

{

char nome [30]

float altura;

struct no *prox;

}

struct no *atletas;

Implemente as funções a seguir:

  1. Uma função que insira atletas no início da lista, a partir da coleta de dados do usuário.
  2. Uma função que retorna o número total de atletas desta lista.
  3. Uma função para imprimir o nome de todos os atletas que apresentam altura superior a 1,90m.
  4. Uma função para dividir esta lista em duas outras, uma com os dados dos atletas com altura inferior a 1,70m e a outra com os atletas com altura igual ou superior a este valor . Nesta operação não deverão ser alocadas novas áreas de memória . Deverão ser utilizadas as mesmas da lista original.

💡 1 Resposta

User badge image

Ed Verified user icon

O campo de informação de cada nó desta lista apresenta o nome e a altura de um atleta, além de um ponteiro para o próximo nó da lista. A implementação apresentada é uma estrutura de dados em linguagem C que representa uma lista linear encadeada de atletas. Para resolver as questões propostas, segue abaixo as funções em C: 1. Função para inserir atletas no início da lista: ```c void insereAtleta(struct no **atletas) { struct no *novoAtleta = (struct no*) malloc(sizeof(struct no)); printf("Digite o nome do atleta: "); scanf("%s", novoAtleta->nome); printf("Digite a altura do atleta: "); scanf("%f", &novoAtleta->altura); novoAtleta->prox = *atletas; *atletas = novoAtleta; } ``` 2. Função para retornar o número total de atletas da lista: ```c int totalAtletas(struct no *atletas) { int total = 0; while (atletas != NULL) { total++; atletas = atletas->prox; } return total; } ``` 3. Função para imprimir o nome de todos os atletas que apresentam altura superior a 1,90m: ```c void imprimeAtletasAltura(struct no *atletas) { while (atletas != NULL) { if (atletas->altura > 1.9) { printf("%s\n", atletas->nome); } atletas = atletas->prox; } } ``` 4. Função para dividir a lista em duas, uma com os dados dos atletas com altura inferior a 1,70m e a outra com os atletas com altura igual ou superior a este valor: ```c void divideLista(struct no *atletas, struct no **atletasBaixos, struct no **atletasAltos) { while (atletas != NULL) { if (atletas->altura < 1.7) { struct no *novoAtleta = (struct no*) malloc(sizeof(struct no)); strcpy(novoAtleta->nome, atletas->nome); novoAtleta->altura = atletas->altura; novoAtleta->prox = *atletasBaixos; *atletasBaixos = novoAtleta; } else { struct no *novoAtleta = (struct no*) malloc(sizeof(struct no)); strcpy(novoAtleta->nome, atletas->nome); novoAtleta->altura = atletas->altura; novoAtleta->prox = *atletasAltos; *atletasAltos = novoAtleta; } atletas = atletas->prox; } } ```

0
Dislike0

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

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais