El codigo si funciona pero esa parte es la que no entiendo ,supongo que esta parte de :
neo->sgte = p->sgte;
p->sgte = neo;
"Pero esto como afectaria *cab ???"
Si alguien tiene alguna idea se lo agradecería
Código
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <conio.h> using namespace std; typedef int TD; struct NODO { TD valor; NODO *sgte; }; void crearLista(NODO **cab); void insertarNodo(NODO **cab, int dato); void mostrarLista(NODO *cab); int listaVacia(NODO *cab); int main() { NODO *A; crearLista(&A); insertarNodo(&A, 20); insertarNodo(&A, 30); insertarNodo(&A, 5); insertarNodo(&A, 80); insertarNodo(&A, 34); insertarNodo(&A, 10); mostrarLista(A); system("PAUSE"); return 0; } void crearLista(NODO **cab) { *cab=NULL; } //Inserta elmentos en forma ordenada void insertarNodo(NODO **cab, int dato) { //NODO nuevo, anterior; NODO *neo, *p; neo = (NODO*)malloc(sizeof(NODO)); neo->valor = dato; // Si la lista está vacía if(listaVacia(*cab) || (*cab)->valor > dato) { //Añadimos la lista a continuación del nuevo nodo neo->sgte = *cab; //Ahora, la lista tiene un nuevo nodo *cab = neo; } else { // Buscar la posicion adecuiada para el nuevo nodo p = *cab; // Busca la posicion adecuada para dato while(p->sgte && p->sgte->valor <= dato){ p = p->sgte; } neo->sgte = p->sgte; p->sgte = neo; } } void mostrarLista(NODO *cab) { NODO *p = cab; if(listaVacia(p)) printf("Lista vacía\n"); else { while(p) { printf("%d -> ", p->valor); p = p->sgte; } printf("\n"); } } int listaVacia(NODO *cab) { return (cab == NULL); }