• Viernes 3 de Mayo de 2024, 12:15

Autor Tema:  Mostrar numeros ordenados de una lista  (Leído 1784 veces)

kikocrak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Mostrar numeros ordenados de una lista
« en: Domingo 3 de Enero de 2010, 16:59 »
0
Buenas gente, tego que hacer un programa que muestre ordenada una lista de numeros enteros. Muchas gracias, Un saludo.

Código: C
  1.  
/* Programa que meta ordenados los numeros a una lista */
#include<stdio.h>
#include<stdlib.h>

    struct nodo{
        int numero;
        struct nodo *siguiente;
    };
 
int  main(void){  
    void IntroducirOrden(struct nodo *primero, int num);
    void Mostrar(struct nodo*primero);
   
    struct nodo *primero;
    primero=NULL;
    int opcion;
    int num;
   
    do{
       
        printf("MENU.n");
        printf("1.-Introducir Numero.n");
        printf("2.-Mostrar lista.n");
        printf("3.-Salir.n");
        printf("OPCION:");
        scanf("%d",&opcion);
   
    switch(opcion){
       
        case 1:
                printf("Introduzca un numero:");
                scanf("%d",&num);  
                system("cls");
                IntroducirOrden(primero,num);
        break;
        case 2:
                Mostrar(primero);
        break;
       
        case 3:
       
        break;
       
        default :
            printf("Opcion Incorrecta.n ");
        break;
     
      }/*switch */  

}while(opcion!=3);


}/*main */



void IntroducirOrden(struct nodo *primero, int num){
   
    struct nodo *nuevo;
    struct nodo *anterior;
    struct nodo *actual;
   
/* Busoc la posicion en la que debo insertar el nodo */

    anterior=actual=primero;
   
    while((actual!=NULL)&&(actual->numero<num)){
       
        anterior=actual;
        actual=actual->siguiente;
    }
   
/* Creo el nodo */

nuevo=(struct nodo*)malloc(sizeof(struct nodo));

nuevo->numero=num;

/* Ajusto los punteros */

if((actual==NULL)||(anterior=actual)){ /* Inserto al principio */
        nuevo->siguiente=anterior;
        primero=nuevo;

}else{   /* Inserto entre medias o al final */
   
    nuevo->siguiente=actual;
    anterior->siguiente=nuevo;
}

}

void Mostrar(struct nodo*primero){
   
    struct nodo *auxiliar;
   
    auxiliar=primero;
   
    while(auxiliar!=NULL){
        printf("%d",auxiliar->numero);
        auxiliar=auxiliar->siguiente;
    }
}