/* Manejo de la lista doble */
static t_Reg_Articulo *crear_nodo_articulo(EMUFS_REG_ID reg, unsigned int num);
static int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo);
+static int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo);
+
+int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo)
+{
+ if (nodo == NULL) return 0;
+ if (nodo->ant == NULL) {
+ /* Me piden borrar el primer nodo */
+ if (nodo->sig) {
+ nodo->sig->ant = NULL;
+ }
+ lst->primero = nodo->sig;
+ } else {
+ if (nodo->sig) {
+ nodo->sig->ant = nodo->ant;
+ }
+ nodo->ant->sig = nodo->sig;
+ }
+ free(nodo);
+ return 1;
+}
t_Reg_Articulo *crear_nodo_articulo(EMUFS_REG_ID reg, unsigned int num)
{
{
WINDOW *win;
t_Articulo *articulo;
- t_Reg_Articulo *nodo, *del;
+ t_Reg_Articulo *nodo;
win = newwin(8, COLS-2, 13, 1);
box(win, 0, 0);
wrefresh(win);
while (nodo) {
if (nodo->numero == articulo->numero) {
lst_articulos->fp->borrar_registro(lst_articulos->fp, nodo->num_reg);
- del = nodo;
- if (nodo->ant) {
- nodo->ant->sig = nodo->sig;
- if (nodo->sig) {
- nodo->sig->ant = nodo->ant;
- }
- } else {
- if (nodo->sig) {
- nodo->sig->ant = NULL;
- }
- lst_articulos->primero = nodo->sig;
- }
- free(del);
+ eliminar_nodo_articulo(lst_articulos, nodo);
break;
}
nodo = nodo->sig;