Ir para conteúdo
Fórum Script Brasil

Ranny Santos

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Ranny Santos

Ranny Santos's Achievements

0

Reputação

  1. Bom dia, galera estou tentando ordenar os elementos de uma lista duplamente encadeada, porem sempre da erro, poderiam me dizer oque esta errado e como corrigir a função, função estará em destaque. Segue o código: #include <stdio.h> #include<stdlib.h> typedef struct no * link; struct no{ int conteudo; link next; link prev; }; link criarLista(); int listaVazia(link l); void imprimeLista(link l); link buscaElemento(link l, int val); void liberaLista(link l); link inserirElementos(link l, int val); link maiorNo(link l); link ordenar(link l); int main(){ link inicio = criarLista(); int i, valor; //Inserir valores e imprimir for(i = 0; i < 5; i++){ printf("\nDigite um valor para a lista: "); scanf("%d", &valor); inicio = inserirElementos(inicio, valor); } printf("Lista inicial: \n"); imprimeLista(inicio); //Buscar maior elemento link aux = maiorNo(inicio); printf("\nO maior elemento da lista e: %d\n", aux->conteudo); //Ordenar lista inicio = ordenar(inicio); printf("\nLista ordenada: \n"); imprimeLista(inicio); return 0; } link criarLista(){ return NULL; } int listaVazia(link l){ return (l == NULL); } void imprimeLista(link l){ link p = l; if(listaVazia(l)){ printf("Lista vazia!\n"); } else{ while(p != NULL){ printf("%d\t", p->conteudo); p = p->next; } } } link buscaElemento(link l, int val){ link p = l; if(listaVazia(l)){ printf("Lista Vazia!\n"); } else{ while(p != NULL){ if(p->conteudo == val){ return p; } p = p->next; } } return NULL; } void liberaLista(link l){ link p = l; while (p != NULL){ link t = p->next; free(p); p = t; } free(l); } link inserirElementos(link l, int val){ link novo = (link)malloc(sizeof(struct no)); novo->conteudo = val; novo->next = l; novo-> prev = NULL; if(l != NULL) l->prev = novo; return novo; } //Interativa link maiorNo(link l){ link p = l; link maior = (link)malloc(sizeof(struct no)); maior->conteudo = l->conteudo; for(p = l; p != NULL; p = p->next){ if(maior->conteudo < p->conteudo){ maior = p; } } return maior; } link ordenar(link l){ link p; link q; for(p = l; p != NULL; p = p->next){ for(q = l; q != NULL; q->next){ if(p->conteudo < q->conteudo){ p->conteudo = q->conteudo; } } } return p; }
×
×
  • Criar Novo...