num = 1;
agregar_lista (num);
num = 2; ,
agregar_lista (num); ... etc
ahora quise hacerlo con while, deje todo como estaba solamente modifique ese procedimiento, pero no se por que no funciona, no lee lo que hay dentro del while como tampoco lo que hay fuera, incluso intente mostrar en pantalla mensajes al iniciar el programa y tampoco sirve, a que se debe? Antes funcionaba sin ningun problema

Código
#include <stdio.h> #include <stdlib.h> typedef struct rNodo { int dato; struct rNodo * siguiente; }tNodo; typedef struct rLista { tNodo * primero; tNodo * ultimo; int longitud; }tLista; typedef tNodo * Nodo; typedef tLista * Lista; tLista * inicializar (Lista lista); tNodo * crear_nodo (int nuevo_dato); tLista * ins_de_orden_ascen (Lista lista, Nodo nuevo_nodo); int main(void) { Lista lista = inicializar(lista); int nuevo_dato; int finalizar = 1; do { lista = ins_de_orden_ascen(lista, crear_nodo(nuevo_dato)); } while (finalizar == 1); return 0; } tLista * inicializar (Lista lista) { nueva_lista->primero = NULL; nueva_lista->ultimo = NULL; nueva_lista->longitud = 0; return nueva_lista; } tNodo * crear_nodo (int nuevo_dato) { nuevo_elemento->dato = nuevo_dato; nuevo_elemento->siguiente = NULL; return nuevo_elemento; } tLista * ins_de_orden_ascen (Lista lista, Nodo nuevo_nodo) { if (lista->longitud == 0) { // Si la lista es vacia nuevo_nodo->siguiente = lista->primero; lista->primero = nuevo_nodo; lista->ultimo = nuevo_nodo; } else { Nodo aux = lista->primero; // aux apunta al primer elemento Nodo sig; int encontro = 0; while (encontro == 0) { sig = aux->siguiente; // sig apunta al siguiente elemento de aux if (aux->dato > nuevo_nodo->dato) { // Si el nuevo elemento es menor al elemento actual nuevo_nodo->siguiente = aux; lista->primero = nuevo_nodo; encontro = 1; } else if ((aux->dato < nuevo_nodo->dato) && (sig == NULL)) { // Si el nuevo elemento es mayor al ultimo de la lista nuevo_nodo->siguiente = aux->siguiente; aux->siguiente = nuevo_nodo; lista->ultimo = nuevo_nodo; encontro = 1; } else if ((aux->dato < nuevo_nodo->dato) && (sig->dato > nuevo_nodo->dato)) { // Si se encuentra en el medio de la lista nuevo_nodo->siguiente = aux->siguiente; aux->siguiente = nuevo_nodo; encontro = 1; } else aux = aux->siguiente; } } lista->longitud++; // Aumenta la cantidad de elementos return lista; }