Ir para conteúdo
Fórum Script Brasil

Ranny Santos

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Ranny Santos postou

  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...