Bom dia/tarde/noite, tenho que criar um programa que ordene valores utilizando listas encadeadas.
Ja consegui boa parte do codigo, estou apenas com dificuldade em mostrar a Lista normal sem estar devidamente ordenada...
Se alguem puder me ajudar eu agradeço mt.
Segue o codigo:
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
#include<windows.h>
typedef struct tLista
{
int valor;
struct tLista *prox;
} lista;
/////////////////////////////////////////////////////
////////////////////////////////////////////////////
lista *atual, *novo, *anterior;
/////////////////////////////////////////////////
/////////////////////////////////////////////////
void inserir(lista **p)
{
int num;
novo = (lista *) malloc(sizeof(lista));
atual = *p;
anterior = NULL;
scanf("%d", &num);
novo->valor = num;
if(atual == NULL){
novo->prox = NULL;
*p = novo;
} else{
while(atual != NULL && atual->valor < num){
anterior = atual;
atual = atual->prox;
}
novo->prox = atual;
if(anterior == NULL){
*p = novo;
} else{
anterior->prox = novo;
}
}
}
//////////////////////////////////////////////////////
/////////////////////////////////////////////////////
void mostraLista(lista *p)
{
while(p != NULL)
{
printf("%4d", p->valor);
p = p->prox;
}printf(" NULL.");
}
////////////////////////////////////////////////////
///////////////////////////////////////////////////
int main(void)
{
setlocale(LC_ALL, "Portuguese");
lista *inicio = NULL;
system("color 50");
int i,n;
printf("Digite quantos valores deseja digitar: \n");
scanf("%d", &n);
system("cls");
for(i=0; i<n; i++)
{
if(i==0){
printf("Digite o %dº número:(NULL)\n ", i+1);
inserir(&inicio);
}
else{
printf("Digite o %dº número:\n ", i+1);
inserir(&inicio);
}
}
printf("\n\n\n");
printf("Lista ordenada: ");
mostraLista(inicio);
return 0;
}