/*2) Dada uma lista simplesmente encadeada, faça a função Lista *inverte(Lista *l)
que inverte a ordem dos elementos da lista, ou seja, o primeiro passa a ser o último, etc.*/
#include<stdio.h>
#include<stdlib.h>
struct Lista{
int contador;
int info;
struct Lista *prox;
};
typedef struct Lista lista;
lista *lst_cria(){
return NULL;
}
void lst_imprime(lista *l){
printf("\nImpressao da lista\n");
for(lista *p = l; p != NULL; p = p -> prox){
printf("\nInfo : %d", p -> info);
}
}
void *lst_inverte(lista *l){
int cont = l -> contador;
int vet = (int*) malloc(cont * sizeof(int));
lista *novo = (lista*) malloc(sizeof(lista));
int j = 0;
for(lista *p = l; p != NULL; p = p -> prox){
vet[j++] = p->info;
}
for(lista *p = l; p != NULL; p = p -> prox){
p -> info = vet[(l -> contador--)];
}
}
lista* lst_insere(lista *l, int valor){
lista *novo = (lista*) malloc(sizeof(lista));
novo -> prox = l;
novo -> info = valor;
novo -> contador++;
system("pause");
return novo;
}
int main(){
Lista *l;
l = lst_cria();
l -> contador = 0;
int h = 0;
do{
l = lst_insere(l, h++);
}while(h < 5);
lst_inverte(l);
lst_imprime(l);
return 0;
}
Pergunta
Zackk
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.