Está en la página 1de 3

Benemrita Universidad Autnoma de San Luis Potos

Facultad de ingeniera. rea de computacin e informtica


Nombre: Gonzlez Patio Oscar Armando
Fecha de entrega: 23 septiembre 2016
Tarea nmero:
Tema: listas
/*funcion que inserta un nodo de manera ordenado de manera recursiva*/
int inserta_ordenado_rec(LISTA*l, int dato){
bool resp;
LISTA nuevo;

if(!*l || dato<(*l)->info){ /*no importa si la lista esta vacia o se vaci, !*l cubre los dos casos*/
resp=crea_nodo(&nuevo, dato);
if(resp){
nuevo->liga=*l;
*l=nuevo; /*el anterior apunta a el al salir de la recursion*/
}
}
else
resp=inserta_ordenado_rec(&(*l)->liga, dato);
return resp;
}

/*funcion que inserta un nodo de manera ordenado*/


int inserta_ordenado(LISTA *l, int dato){
bool resp;
LISTA nuevo, aux, ant;

resp=crea_nodo(&nuevo, dato);
if(resp){
if(!*l)
*l=nuevo;

else{
aux=*l;

while(aux && dato<aux->info){


ant=aux;
aux=aux->liga;
}

ant->liga=nuevo;
nuevo->liga=aux;
}
}
return resp;
}

/*funcion que inserta un nodo en una lista sin repetir*/


int inserta_sinrepetir(LISTA *l, int dato){
bool resp;
LISTA ant, aux=*l, nuevo;

resp=crea_nodo(&nuevo, dato);
if(resp){
while(aux && dato!=aux->info){
ant=aux;
aux=aux->liga;
}
if(!aux){
ant->liga=nuevo;
nuevo->liga=aux;
}
}
return resp;
}

/*funcion que inserta un nodo en una lista sin repetir recursivo*/


int inserta_sinrepetir_rec(LISTA *l, int dato){
bool resp;
LISTA nuevo;

if(*l || (*l)->info!=dato){
resp=crea_nodo(&nuevo, dato);
if(resp){
nuevo->liga=*l;
*l=nuevo;
}
}
else
resp=inserta_sinrepetir_rec((*l)->liga, dato);
return resp;
}

También podría gustarte