Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Insertar dato a lista enlazada y quede ordenada

Estas en el tema de Insertar dato a lista enlazada y quede ordenada en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/06/2013, 19:26
 
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
  #2 (permalink)  
Antiguo 01/07/2013, 05:52
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Insertar dato a lista enlazada y quede ordenada

Hola redredred.

Código C:
Ver original
  1. ...
  2.   //3 buscando donde insertar el NODO
  3.   q = p;
  4.   printf("\nBuscando...\n");
  5.   while (nodo > info[q] && q != -1) {
  6.     s = q;
  7.     q = enl[q];
  8.   }
  9.   info[r] = nodo;
  10.   if (p == q) {       // inserta al inicio
  11.     enl[r] = p;
  12.     p = r;
  13.   }
  14.   else if (q == -1) { // inserta al final
  15.       enl[s] = r;
  16.       enl[r] = -1;
  17.   }
  18.   else {              // inserta entre
  19.     enl[s] = r;
  20.     enl[r] = q;
  21.   }
  22. ...

Saludos :)

Etiquetas: dato, enlazada, int, lista, ordenada, programa, quede, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:25.