Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2013, 19:26
redredred
 
Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años
Puntos: 0
Información Insertar dato a lista enlazada y quede ordenada

Hola el siguiente código que tengo sirve para poder insertar un dato a una lista enlazada y quede ordenada automáticamente, el problema es que cuando ingreso un dato que sea menor al que esta especificado se guarda en cualquier posición y cuando ingreso uno que sea mayor al que esta especificado el programa se cae. Ayuda Por favor.


Código:
# include <stdio.h>
# include <conio.h>
# define MAX_LISTA 10
int info[MAX_LISTA]={30,70,40,60,10,80,50,20,0,0},p=4;
int enl[MAX_LISTA]= {2,5,6,1,7,-1,3,0,0,0};
int r=8;//almacena la posicion libre de mi lista enlazada
int s=0;//variable auxiliar que almacena el ENLACE de la lista enlazada

int nodo=0;

int main()
{
    //1 mostrando la lista original
 int q=p;
 printf("La lista antes de la insercion es:\n");
 while (q!=-1)
 {
       printf("%d\n",info[q]);
       q=enl[q];
              } 
              
   //2 se solicita el NODO a ser insertado  
   printf("\nIngrese nodo a ser insertado: ");
   scanf("%d",&nodo);               
              
              
   //3 buscando donde insertar el NODO
   q=p;
   
   printf("\nBuscando...\n");
   
   while (nodo > info[q])
   {
         s=q;
         printf("Si\t %d\t %d\n ",info[q],s);
         q=enl[q];
         
         }
         info[r]=nodo;
         enl[r]=enl[s]; //OJO
         enl[s]=r; //OJO
         
           
            //4 mostrando la lista original
 q=p;
 printf("La lista final es:\n");
 while (q!=-1)
 {
       printf("%d\n",info[q]);
       q=enl[q];
              } 
           
           getch();
         
         
              
}

Última edición por redredred; 30/06/2013 a las 20:18