Ordenar lista dinamica em c

19/10/2019

3

Eu preciso de ajuda com esse trabalho, para ordenar uma lista dinamica em c, alguem pode me ajudar?

#include <stdio.h>
#include <stdlib.h>

struct sno
{
int info;
sno *prox;
};

void mostrarLista(sno *lis)
{
printf("lista -> ");

while (lis != NULL)
{
printf("%d -> ", lis->info);
lis = lis->prox;
}

printf("NULL");
}

void iniciarLista(sno **lis)
{
*lis = NULL;
}

void inserirInicioLista(sno **lis, int v)
{
sno *no;

no = (sno *) malloc(sizeof(sno));

no->info = v;
no->prox = *lis;
*lis = no;
}

void inserirFimLista(sno **lis, int v)
{
sno *no, *ult;

if (*lis == NULL) // inserir no início da lista
inserirInicioLista(lis, v);
else
{
ult = *lis; // ult recebe o início da lista (no main, lista)

while (ult->prox != NULL)
{
ult = ult->prox;
}

no = (sno *) malloc(sizeof(sno));

no->info = v;
no->prox = NULL;
ult->prox = no;
}
}

void inserirOrdemLista(sno **lis, int v){

sno *atual, *novo, *anterior;


novo = (lis *) malloc(sizeof(lista));

atual = *lis;
anterior = NULL;



novo->info = v;

if(atual == NULL){
novo->prox = NULL;
*lis = novo;
} else{
while(atual != NULL && atual->info < *lis){
anterior = atual;
atual = atual->prox;
}

novo->prox = atual;

if(anterior == NULL){
*lis = novo;
} else{
anterior->prox = novo;
}
}


}

int main()
{
sno *lista;

iniciarLista(&lista); // lista recebe NULL (vazia)

inserirInicioLista(&lista, 30);
inserirInicioLista(&lista, 10);
inserirFimLista(&lista, 20);
inserirFimLista(&lista, 35);

mostrarLista(lista);

printf("\n\n\n");
system("pause");
return 0;
}
Responder