#1 [ALGORITMO] Listas
Buenas, estoy como loco con arrays , especialmente con los dinamicos (Listas) y tengo una duda terrible.
Tengo que desarrollar un algoritmo que inserte elementos en una lista dinamica.
Ejemplo, ingreso una serie de alumnos con su respectivo legajo, la lista tiene que ir ordenandoce automaticamente de menor a mayor segun el legajo.
Es decir, agrego el primer alumno :
Nombre : Martin
Legajo : 12
Ahora quiero agregar otro alumno
Nombre : Matias
Legajo : 11
Lo que tengo que realizar, es que luego de Agregar Martin, al hacerlo con Matias, se ponga en la primer posicion en el caso de que sea menor que el siguiente, y si no, que avance un lugar y se compare con el que le sigue.
Espero haberme explicado lo mejor posible y esperar una respuesta, por que me esta volviendo loco
Tengo que desarrollar un algoritmo que inserte elementos en una lista dinamica.
Ejemplo, ingreso una serie de alumnos con su respectivo legajo, la lista tiene que ir ordenandoce automaticamente de menor a mayor segun el legajo.
Es decir, agrego el primer alumno :
Nombre : Martin
Legajo : 12
Ahora quiero agregar otro alumno
Nombre : Matias
Legajo : 11
Lo que tengo que realizar, es que luego de Agregar Martin, al hacerlo con Matias, se ponga en la primer posicion en el caso de que sea menor que el siguiente, y si no, que avance un lugar y se compare con el que le sigue.
Código:
Programa < Lista >
Declaraciones
Estructura Nodo
Caracter Nom
Entero Leg
Punt prim // Puntero que apunta a nodo de tipo "PUNT"
Fin estructura
caracter nom
entero leg
punt puntero a nodo // puntero que apunta a NODO
L lista a nodo // declaracion formal de que trabajare con una lista
Procedimiento Agregar (entero leg, caracter nom)
Inicio
prim = null // Creo la lista de elementos
leer nom
leer leg
agregar (leg,nom)
Procedimiento Agregar (Entero leg, caracter nom) // Hago llamado al procedimiento
Declaraciones
punt aux
punt ant
punt act
Inicio
Si prim = null // En el caso de que no se halla agregado ningun elemento, ingreso lo escrito en la primera posicion
prim.leg = leg //asignos valores al primer nodo
prim.nom = nom
prim.sig = null // Reservo el proximo lugar de la lista
Si no
esta es la parte que se complica, ya que debo usar una sentencia comparativa, y a su ves tengo que ir guardando en otros punteros, las posiciones del elemento anterior y del elemento siguiente para unirlas al nuevo nodo. Por eso, declaro un puntero aux, un puntero ant y un puntero act.
Lo que tengo q hacer, que lo se, pero no se me ocurre como plasmarlo en el algoritmo, es en un principio ir comparando :
Leg 14
Leg 18
Leg 20
Legajo a Agregar : 19
Tengo que comparar el 19 con el 14, si es mayor, compararlo con el siguiente a 14, si es menor, ingresarlo en el medio, guardando la posicion del 14 en un puntero ant, y reservando la posicion del siguiente en un puntero act, y unir el nuevo elemento con el siguiente y con el anterior.
En el caso que no sea, que evalue el 18 y el 20 y asi sucesivamente :(
0