30/06/2013, 19:26
|
| | Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años, 7 meses Puntos: 0 | |
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 |