Buscar

AP1 de Estrutura de Dados

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

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
Você viu 3, do total de 4 páginas

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

Estruturas de Dados
Correção AP1
Prof. Patrícia Noll de Mattos
Deve ser realizado de forma individual:
1)Criar uma função que remova o menor elemento de uma
lista simplesmente encadeada com header.
2)Criar uma função que troque o campo dados do primeiro
elemento com o último, o segundo elemento, com o
penúltimo, o terceiro elemento, com o antepenúltimo, e
assim por diante, de forma que a lista duplamente
encadeada com header, fique espelhada.
int remove_menor(struct header *lista)
{
int valor=0;
struct nodo *ant=NULL, *antm=NULL, *aux=NULL, *m=NULL;
aux = lista->inicio;
m=aux;
while (aux != NULL)
{
if(aux->dados < m->dados) 
{
antm=ant;
m=aux;
}
ant = aux;
aux = aux->prox;
}
if(m != NULL) {
valor = m->dados;
if (m==lista->inicio) lista->inicio = m->prox;
else
antm->prox = m->prox;
if (m == lista->fim) lista->fim = antm;
lista->qtde--;
free(m);
} 
return valor;
}
7
5
10
lista
2inicio fim
aux
ant
m
antm
void inverte_lista(struct aponta_header *listad)
{
int nro, valor, c=1;
struct aponta_nodo *aux, *aux2;
if(lista->qtde>=2)
{
nro = lista->qtde / 2;
aux = lista->inicio;
aux2 = lista->fim;
while (c<=nro)
{
valor = aux->dados;
aux->dados = aux2->dados;
aux2->dados = valor;
aux=aux->prox;
aux2=aux2->ant;
c++;
}
}
else
printf(“A lista não possui pelo menos 2 elementos!”);
}
710 5
listad
3inicio fim
aux aux2
Valor
5
C
2
Nro
1

Continue navegando