PtrNodoPiso siguiente(ListaPiso &listaP, PtrNodoPiso ptrNodoP){ /* verifica si la lista está vacia o si ptrNodo es el último */ if ((! listaVacia(listaP)) && (ptrNodoP != finP())) return ptrNodoP->sgteP; else return finP(); }
PtrNodoPiso adicionarAntes(ListaPiso &listaP, PilUb pilUb, PtrNodoPiso ptrNodoP){ PtrNodoPiso ptrNuevoNodo = finP(); if (! listaVacia(listaP)) { if (ptrNodoP != primero(listaP)) ptrNuevoNodo = adicionarDespues(listaP,pilUb,anterior(listaP,ptrNodoP)); else ptrNuevoNodo = adicionarPrincipio(listaP,pilUb); } return ptrNuevoNodo; }
void listaTrenes::insertar(Tren *nuevo){ if(listaVacia()){ primero = nuevo; return; } else{ Tren *tmp = primero; while(tmp->siguiente != NULL){ tmp = tmp->siguiente; } tmp->siguiente = nuevo; } }
Tren *listaTrenes::buscar(QString placa){ if(listaVacia()){ return NULL; } else{ Tren *tmp = primero; while(tmp->siguiente != NULL){ if(tmp->placa == placa){ return tmp; } else{ tmp = tmp->siguiente; } } return NULL; } }
int main(){ t_lista pl; t_info pd; puts("CREANDO LISTA... \n"); crear_lista(&pl); pd.num = 4; printf("INSERTANDO %d ... \n",pd.num); //insertarEnOrden(&pl, &pd, comparar); insertarAdelante(&pl, &pd); //insertarAlFinal(&pl, &pd); pd.num = 1; printf("INSERTANDO %d ... \n",pd.num); //insertarEnOrden(&pl, &pd, comparar); //insertarAdelante(&pl, &pd); insertarAlFinal(&pl, &pd); pd.num = 2; printf("INSERTANDO %d ... \n",pd.num); //insertarEnOrden(&pl, &pd, comparar); insertarAdelante(&pl, &pd); //insertarAlFinal(&pl, &pd); printf("\nLISTA VACIA?: %s\n", listaVacia(&pl)==1?"SI":"NO"); puts("LISTANDO... \n"); listar(&pl); ordenar(&pl, comparar); puts("LISTANDO... \n"); listar(&pl); puts("\nELIMINANDO EL 4... \n"); pd.num = 4; eliminarDeListaNoOrdenada(&pl, &pd, comparar); puts("LISTANDO... \n"); listar(&pl); return 0; }
void eliminarNodo(ListaPiso &listaP, PtrNodoPiso ptrNodoP){ PtrNodoPiso ptrPrevio; /* verifica que la lista no esté vacia y que nodo no sea fin*/ if ((! listaVacia(listaP)) && (ptrNodoP != finP())) { if (ptrNodoP == primero(listaP)) listaP.primeroPiso = siguiente(listaP,primero(listaP)); else { ptrPrevio = anterior( listaP , ptrNodoP ); ptrPrevio->sgteP = ptrNodoP->sgteP; } // Si el dato es un TDA, acá habría que llamar al destructor. destruir(ptrNodoP->pilUb); delete ptrNodoP; } }
//******************* void eliminarNodo(ListaArtDeposito &listaArtDep,PtrNodoListaDeposito ptrNodoListaDep){ PtrNodoListaDeposito ptrPrevio; /* verifica que la lista no esté vacia y que nodo no sea fin*/ if ((! listaVacia(listaArtDep)) && (ptrNodoListaDep != finAD())) { if (ptrNodoListaDep == primero(listaArtDep)) listaArtDep.primerArtDeposito = siguiente(listaArtDep,primero(listaArtDep)); else { ptrPrevio = anterior( listaArtDep , ptrNodoListaDep ); ptrPrevio->sgteAD= ptrNodoListaDep->sgteAD; } // Si el dato es un TDA, acá habría que llamar al destructor. delete ptrNodoListaDep; } }
//******************** PtrNodoListaDeposito adicionarDespues(ListaArtDeposito &listaArtDep,ArtDep datoArtDep, PtrNodoListaDeposito ptrNodoListaDep){ PtrNodoListaDeposito ptrNuevoNodo = finAD(); /* si la lista está vacia se adiciona la principio */ if (listaVacia(listaArtDep)) ptrNuevoNodo = adicionarPrincipio(listaArtDep,datoArtDep); else { if (ptrNodoListaDep != finAD()) { /* crea el nodo y lo intercala en la lista */ ptrNuevoNodo = crearNodoLista(datoArtDep); ptrNuevoNodo->sgteAD = ptrNodoListaDep->sgteAD; ptrNodoListaDep->sgteAD = ptrNuevoNodo; } } return ptrNuevoNodo; }
PtrNodoPiso adicionarDespues(ListaPiso &listaP, PilUb pilUb, PtrNodoPiso ptrNodoP){ PtrNodoPiso ptrNuevoNodo = finP(); /* si la lista está vacia se adiciona la principio */ if (listaVacia(listaP)) ptrNuevoNodo = adicionarPrincipio(listaP,pilUb); else { if (ptrNodoP != finP()) { /* crea el nodo y lo intercala en la lista */ ptrNuevoNodo = crearNodoLista(pilUb); ptrNuevoNodo->sgteP = ptrNodoP->sgteP; ptrNodoP->sgteP = ptrNuevoNodo; } } return ptrNuevoNodo; }
void obtenerDato(ListaPiso &listaP, PilUb &pilUb, PtrNodoPiso ptrNodoP){ if ((! listaVacia(listaP)) && (ptrNodoP != finP())) pilUb = ptrNodoP->pilUb; }
//******************** void eliminarNodoPrimero(ListaArtDeposito &listaArtDep){ if (! listaVacia(listaArtDep)) eliminarNodo(listaArtDep,primero(listaArtDep)); }
//******************** void eliminarNodoUltimo(ListaArtDeposito &listaArtDep){ if (! listaVacia(listaArtDep)) eliminarNodo(listaArtDep,ultimo(listaArtDep)); }
void eliminarLista(ListaPiso &listaP){ while (! listaVacia(listaP)) eliminarNodo(listaP,primero(listaP)); }
void eliminarNodoUltimo(ListaPiso &listaP){ if (! listaVacia(listaP)) eliminarNodo(listaP,ultimo(listaP)); }
void eliminarNodoPrimero(ListaPiso &listaP){ if (! listaVacia(listaP)) eliminarNodo(listaP,primero(listaP)); }
int main(int argc, char** argv) { char input[INPUTSIZE]; while(fgets(input , INPUTSIZE , stdin) != NULL) { switch(input[0]){ case 'p': primerAlumno(); break; case 'u': ultimoAlumno(); break; case 'i': { char * id, *nom, *tel; strtok(input,","); id = strtok(NULL, ",\n\t"); nom = strtok(NULL, ",\n\t"); tel = strtok(NULL, ",\n\t"); insertarAlumno(atoi(id),nom,atoi(tel)); break; } case 'b': { char* id; strtok(input,",\n\t"); id = strtok(NULL, ",\n\t"); if (input[1] == 'u'){ //buscar buscarAlumno(atoi(id)); break; }else{ //borrar borrarAlumno(atoi(id)); break; } } case 'c': crearLista(); break; case 'l': { if(input[5] == 'r'){ listarAlumnos(); break; }else{ listaVacia(); break; } } case 'm': { char * id, *tel; strtok(input,",\n\t"); id = strtok(NULL, ",\n\t"); tel = strtok(NULL, ",\n\t"); modificarTelefono(atoi(id),atoi(tel)); break; } } } while( alumnos.primero != NULL ){ struct nodo *ptr; ptr = alumnos.primero; alumnos.primero = ptr->sig; free(ptr); } /* crearLista(); insertarAlumno(172799,"Arnau",685412152); insertarAlumno(175214,"PEPA",52341451); insertarAlumno(174521,"JOAQUIN",54548215); insertarAlumno(184521,"f1",9685485); insertarAlumno(114521,"g3",15641655); listarAlumnos(); ultimoAlumno(); borrarAlumno(184521); ultimoAlumno(); primerAlumno(); borrarAlumno(172799); buscarAlumno(174521); buscarAlumno(172799); primerAlumno(); listarAlumnos();*/ //HACER FREEEEE DE LA COLA ENTERA ******************************************************************************** #if DEBBUGPRIMERO primerAlumno(); borrarAlumno(114521); primerAlumno(); #endif #if DEBBUGBORRAR borrarAlumno(3652); //comprobamos que si no existe el nia no borra nada borrarAlumno(175214); listarAlumnos(); #endif #if DEBBUGULTIMO ultimoAlumno(); borrarAlumno(184521); ultimoAlumno(); #endif #if DEBBUGTELEFONO modificarTelefono(174521); listarAlumnos(); #endif return (EXIT_SUCCESS); }
//******************** void eliminarLista(ListaArtDeposito &listaArtDep){ while (! listaVacia(listaArtDep)) eliminarNodo(listaArtDep,primero(listaArtDep)); }
//******************** void obtenerDato(ListaArtDeposito &listaArtDep,ArtDep &datoArtDep, PtrNodoListaDeposito ptrNodoListaDep){ if ((! listaVacia(listaArtDep)) && (ptrNodoListaDep != finAD())) datoArtDep = ptrNodoListaDep->datoArtDep; }
//******************** void colocarDato(ListaArtDeposito &listaArtDep,ArtDep &datoArtDep, PtrNodoListaDeposito ptrNodoListaDep){ if ( (! listaVacia(listaArtDep)) && (ptrNodoListaDep != finAD())) ptrNodoListaDep->datoArtDep = datoArtDep; }
//******************** PtrNodoListaDeposito siguiente(ListaArtDeposito &listaArtDep,PtrNodoListaDeposito ptrNodoListaDep){ if ((! listaVacia(listaArtDep)) && (ptrNodoListaDep != finAD())) return ptrNodoListaDep->sgteAD; else return finAD(); }