Boa tarde gostaria de entender porque o codigo abaixo não funciona corretamente, alguem poderia me informar ?? LINK para por para rodar : https://repl.it/@JulianaMaria/Questao-1
/* Escrever um Pseudocódigo de inserção em uma lista encadeada ordenada. */
#include <stdio.h>
#include <stdlib.h>
typedef struct Dados {
int numero;
struct Dados * proximo;
}No;
void imprime (No * lista){
printf("\n Lista = ");
while(lista->proximo != NULL){
printf(" %d ",lista->numero);
lista = lista->proximo;
}
printf("\n");
}
No * inserir_ordenado(int valor, No * inicio_lista){
No * percorrer_lista, * novo_no, *l;
percorrer_lista = (No*)malloc(sizeof(No));
novo_no = (No*)malloc(sizeof(No));
percorrer_lista = inicio_lista;
novo_no->numero = valor;
int cont = 0;
while((percorrer_lista->numero < valor)&&(percorrer_lista->proximo != NULL)){
percorrer_lista = percorrer_lista->proximo;
cont++;
}
//inserir fim
if((percorrer_lista->proximo == NULL)&&(cont != 0)){
percorrer_lista->proximo = novo_no;
novo_no->proximo = NULL;
}else{
//inserir inicio
if(cont == 0){
novo_no->proximo = percorrer_lista;
}
//inserir meio
else{
novo_no->proximo = percorrer_lista->proximo;
percorrer_lista->proximo = novo_no;
}
}
return inicio_lista;
}
int main (){
No * lista, * pt;
int valor,op = 1;
pt = lista;
lista->numero = 10;
lista->proximo = NULL;
while(op == 1){
printf("\n Digite valor para inserir na lista : ");
scanf("%d",&valor);
lista = inserir_ordenado(valor,pt);
printf("\n Deseja inserir outro valor ? [Digite 1 para sim e outro valor para nao] = ");
scanf("%d",&op);
}
imprime(pt);
}