void cola :: vacia(){ while(!es_vacia()){ desencolar(); } return; }
//Destructor cola :: ~cola (void){ ptr_nodo aux; while(!es_vacia()){ desencolar(); } }
void anadir_derecha (ELEMENTO e, pLISTA pL) /**********************************************************************/ { if (es_vacia (*pL)) crear_unitaria (pL, e); else { pL->ultimo->siguiente = (pNODO) malloc (sizeof (NODO)); pL->ultimo = pL->ultimo->siguiente; pL->ultimo->dato = e; pL->ultimo->siguiente = NULL; pL->elementos++; } }
void anadir_derecha_copiando (ELEMENTO e, pLISTA pL, int tamano) /**********************************************************************/ { if (es_vacia (*pL)) crear_unitaria_copiando (pL, e, tamano); else { pL->ultimo->siguiente = (pNODO) malloc (sizeof (NODO)); pL->ultimo = pL->ultimo->siguiente; pL->ultimo->dato = (void *) malloc (tamano); memcpy (pL->ultimo->dato, e, tamano); pL->ultimo->siguiente = NULL; pL->elementos++; } }
void anadir_izquierda (ELEMENTO e, pLISTA pL) /**********************************************************************/ { if (es_vacia (*pL)) crear_unitaria (pL, e); else { pNODO nuevoNodo; nuevoNodo = (pNODO) malloc (sizeof (NODO)); nuevoNodo->dato = e; nuevoNodo->siguiente = pL->primero; pL->primero = nuevoNodo; pL->elementos++; } }
void anadir_izquierda_copiando (ELEMENTO e, pLISTA pL, int tamano) /**********************************************************************/ { if (es_vacia (*pL)) crear_unitaria_copiando (pL, e, tamano); else { pNODO nuevoNodo; nuevoNodo = (pNODO) malloc (sizeof (NODO)); nuevoNodo->dato = (void *) malloc (tamano); memcpy (nuevoNodo->dato, e, tamano); nuevoNodo->siguiente = pL->primero; pL->primero = nuevoNodo; pL->elementos++; } }
void concatenar (pLISTA pL1, LISTA l2) /**********************************************************************/ { if (l2.elementos != 0) { if (es_vacia(*pL1)) { *pL1 = l2; } else { pL1->ultimo->siguiente = l2.primero; pL1->ultimo = l2.ultimo; pL1->elementos = pL1->elementos+l2.elementos; } } }