You are on page 1of 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Subprogramas para el manejo de Listas, Pilas y Colas


InsertarEnLista: Este procedimiento crea un nuevo nodo y lo inserta en una lista con repeticiones
ordenada.

GenerarNodo: Este procedimiento crea un nuevo nodo y lo inserta delante del nodo apuntado por el puntero
dado.

InsertarNodo: Este procedimiento ve si la lista esta vaca inserta el primer nodo, sino lo inserta en el lugar
que corresponda.

BuscarNodo: Esta funcin busca en una lista un nodo y devuelve NIL si la lista esta vaca o si no lo
encuentra, sino devuelve un puntero al nodo que contenga ese campo clave. BuscarNodoAnterior: Esta funcin busca en una lista ordenada en forma ascendente y devuelve un puntero al nodo que tenga en el campo clave el valor anterior ms prximo al valor buscado, exista ste o no. Si la lista est vaca o el nodo buscado es el primero de la misma, la funcin devuelve NIL. InsertarEnListaSinRepeticion: Este procedimiento busca el nodo que contenga el valor mas prximo al que se desea insertar, si este nodo es NIL lo inserta primero, sino inserta donde corresponde. Si el nodo ya existe (en la lista) actualiza los datos. InsertarSiNoExiste: Este procedimiento crea un nuevo nodo si no existe uno con los valores requeridos, y lo inserta delante del nodo apuntado por el puntero dado. Adems, devuelve por parmetro un puntero al nodo LiberarLista: Este procedimiento recorre la lista y libera nodo a nodo hasta llegar al final de la lista. LiberarNodo: Este procedimiento desprende de la lista un nodo y luego libera la memoria ocupada por este. InsertarEnListaDeListas: Este procedimiento crea un nuevo nodo en la lista principal en el caso que no exista uno con los valores requeridos, y luego inserta uno nuevo en la sublista (est ordenada y puede tener repeticiones) correspondiente al nodo que contiene los valores dados LiberarListaDeListas: Este procedimiento recorre la lista principal y va liberando los nodos de la sublista, una vez liberados, libera el nodo de la lista principal hasta eliminar todos los nodos de las sublistas y de la lista. ReordenarLista: Este procedimiento recorre la lista y desprende cada uno de los nodos para luego insertarlo en el orden deseado en una lista auxiliar, y una vez reordenada la devuelve. InsertarEnListaReordenada: Este procedimiento realiza la misma tarea que el procedimiento InsertarEnLista EliminarDeLista: Este procedimiento desprende un nodo de la lista y lo elimina. BuscarNodoAnterior2Claves: Este procedimiento busca el nodo anterior a un nodo, y devuelve NIL si no hay anterior sino devuelve el puntero correspondiente. InsertarEnPila: Este procedimiento genera el nodo y lo inserta siempre al comienzo de la pila. SacarDePila: Este procedimiento desprende el primer nodo de la pila y devuelve un puntero a ese nodo. EliminarDePila: Este procedimiento desprende el primer nodo de la pila y lo elimina. InsertarEnCola: Este procedimiento genera el nodo y lo inserta al final de la cola. InsertarNodoCola: Este procedimiento pregunta si el inicio de la cola es NIL, si lo es inserta el nodo primero sino lo inserta al final y corre el puntero colafin al nuevo fin. SacarDeCola: Este procedimiento pregunta si la cola no esta vaca, si no esta vaca desprende el primer nodo. EliminarDeCola: Este procedimiento desprende el primer nodo de la cola y lo elimina.

Pgina 1 de 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Procedure InsertarEnLista Var lista: TipoPuntero; info: TipoNodo ptrNuevo GenerarNodo (info) ptrAnt BuscarNodoAnterior (lista, info) ptrAnt = NIL InsertarNodo lista, ptrNuevo InsertarNodo ptrAnt^.sgte, ptrNuevo R

Procedure InsertarEnLista
Function GenerarNodo info: TipoInfo New (ptrNuevo) ptrNuevo^.info info GenerarNodo R ptrNuevo : TipoPuntero

Function GenerarNodo
Procedure InsertarNodo Var puntero: TipoPuntero; ptrNuevo: TipoPuntero ptrNuevo^.sgte puntero puntero R ptrNuevo

Procedure InsertarNodo
Function BuscarNodo puntero: TipoPuntero; info: TipoInfo puntero lista puntero puntero^.sgte puntero R : TipoPuntero

(puntero <> NIL) And (info.campoClave <> puntero^.info.campoClave) BuscarNodo

Function BuscarNodo
Function BuscarNodoAnterior puntero: TipoPuntero; info: TipoInfo ptrAnt NIL ptrAnt puntero puntero puntero^.sgte ptrAnt R : TipoPuntero

(puntero <> NIL) And (info.campoClave > puntero^.info.campoClave)

BuscarNodoAnterior

Function BuscarNodoAnterior

Pgina 2 de 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Procedure InsertarEnListaSinRepeticion Var lista: TipoPuntero; info: TipoInfo; regCambios: TipoRegistro ptrAnt BuscarNodoAnterior (lista, info) ptrAnt = NIL InsertarSiNoExiste lista, ptrAux, info InsertarSiNoExiste ptrAnt^.sgte, ptrAux, info

ActualizarNodo ptrAux, regCambios R

Procedure InsertarEnListaSinRepeticion
Procedure InsertarSiNoExiste Var puntero, ptrAux: TipoPuntero; info TipoInfo (puntero = NIL) Or (info.campoClave <> puntero^.info.campoClave) ptrNuevo GenerarNodo (info) InsertarNodo puntero, ptrNuevo ptrAux R puntero

Procedure InsertarSiNoExiste
Procedure LiberarLista Var lista: TipoPuntero lista <> NIL LiberarNodo lista R

Procedure LiberarLista
Procedure InsertarEnListaDeListas Var listaPrinc: TipoPtrListaPrinc; infoLP: TipoInfoListaPrinc; infoSL: TipoInfoSubLista ptrAnt BuscarNodoAnteriorListaPrinc (listaPrinc, infoLP) { ver BuscarNodoAnterior } ptrAnt = NIL InsertarSiNoExisteListaPrinc listaPrinc, ptrAux, infoLP { ver InsertarSiNoExiste } InsertarSiNoExisteListaPrinc ptrAnt^.sgte, ptrAux, infoLP { ver InsertarSiNoExiste }

InsertarEnSubLista ptrAux^.info.subLista, infoSL { ver InsertarEnLista } R

Procedure InsertarEnListaDeListas

Pgina 3 de 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Procedure LiberarListaDeListas Var listaPrinc: TipoPtrListaPrinc listaPrinc <> NIL LiberarSubLista listaPrinc^.info.subLista { ver LiberarLista } LiberarNodoListaPrinc listaPrinc { ver LiberarNodo } R

Procedure LiberarListaDeListas
Procedure LiberarNodo Var puntero: TipoPuntero ExtraerNodo puntero, ptrBorrar Dispose (ptrBorrar) R

Procedure LiberarNodo
Procedure ReordenarLista Var Lista: TipoPuntero listaAux NIL lista <> NIL ExtraerNodo lista, ptrAux InsertarEnListaReordeada listaAux, ptrAux lista listaAux R

Procedure ReordenarLista
Procedure ExtraerNodo Var puntero, ptrAux: TipoPuntero ptrAux puntero puntero puntero^.sgte NIL R ptrAux^.sgte

Procedure ExtraerNodo
Procedure InsertarEnListaReordenada Var lista: TipoPuntero; ptrNuevo: TipoPuntero BuscarNodoAnteriorNuevoOrden (lista, ptrNuevo^.info) {ver BuscarNodoAnterior} prtAnt = NIL InsertarNodo lista, ptrNuevo InsertarNodo ptrAnt^.sgte, ptrNuevo R

ptrAnt

Procedure InsertarEnListaReordenada
Pgina 4 de 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Procedure EliminarDeLista Var lista: TipoPuntero; info: TipoInfo SacarDeLista lista, ptrBorrar, info ptrBorrar <> NIL Dispose (ptrBorrar) R

Procedure EliminarDeLista
Function BuscarNodoAnterior2Claves puntero: TipoPuntero; info: TipoInfo ptrAnt NIL : TipoPuntero

(puntero <> NIL) And ((info.campoClave1 > puntero^.info.campoClave1) Or ((info.campoClave1 = puntero^.info.campoClave1) And (info.campoClave2 > puntero^.info.campoClave2))) ptrAnt puntero puntero puntero^.sgte ptrAnt R

BuscarNodoAnterior

Function BuscarNodoAnterior2Claves
Procedure InsertarEnPila Var pila: TipoPtrPila; info: TipoInfoPila ptrNuevo GenerarNodoPila (info) {ver GenerarNodo} InsertarNodoPila pila, ptrNuevo {ver InsertarNodo} R

Procedure InsertarEnPila
Procedure SacarDePila Var pila, puntero: TipoPtrPila puntero pila pila <> NIL ExtraerNodoPila pila, puntero {ver ExtraerNodo} { ver ExtraerNodo } R

Procedure SacarDePila
Procedure EliminarDePila Var pila: TipoPtrPila SacarDePila pila, ptrBorrar Dispose (ptrBorrar) R

Procedure EliminarDePila
Pgina 5 de 6

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos 76222503.doc

Procedure InsertarEnCola Var colaInicio, colaFin: TipoPtrCola; info: TipoInfoCola ptrNuevo GenerarNodoCola (info) { ver GenerarNodo } InsertarNodoCola colaInicio, colaFin, ptrNuevo R

Procedure InsertarEnCola
Procedure InsertarNodoCola Var colaInicio, colaFin: TipoPtrCola; ptrNuevo: TipoPtrCola colaInicio colaInicio <> NIL ptrNuevo colaFin^.sgte colaFin ptrNuevo R ptrNuevo

Procedure InsertarNodoCola
Procedure SacarDeCola Var colaInicio, colaFin, puntero: TipoPtrCola puntero colaInicio colaInicio <> NIL ExtraerNodoCola colaInicio, puntero colaInicio = NIL colaFin NIL R

Procedure SacarDeCola
Procedure EliminarDeCola Var colaInicio, colaFin: TipoPtrCola SacarDeCola colaInicio, colaFin, ptrBorrar Dispose (ptrBorrar) R

Procedure EliminarDeCola

Pgina 6 de 6

You might also like