/*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
#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; }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.