#include <stdio.h>
#include <stdlib.h>
struct nodo{
int dato;
struct nodo *sig;
};
typedef struct nodo tNodo;
typedef tNodo* tPtrNodo;
void almacenar(tPtrNodo plista, int num);
/ /
/ */
int buscar(tPtrNodo plista, int num);
/ /
/ */
void borrar(tPtrNodo plista, int num);
/ /
/ /
void visualizar (tPtrNodo lista);
/ /
/ */
void media (tPtrNodo lista);
//
//
int main(){
tPtrNodo haber_estudiao;
int opc, num, extra, otro;
/* Lista vacia */
haber_estudiao=(tPtrNodo)NULL;
do{
printf("\nElige opción: ");
scanf("%d",&opc);
switch (opc){
case 1:
printf("\nnumero: ");
scanf("%d",&num);
almacenar (&haber_estudiao, num);
break;
case 2:
printf("\nNumero a buscar: ");
scanf("%d",&num);
extra = buscar(&haber_estudiao, num);
printf("%d", extra);
break;
case 3:
printf("\nNumero a borrar: ");
scanf("%d",&num);
borrar (&haber_estudiao, num);
break;
case 4:
printf("\nVisualizando: ");
visualizar (haber_estudiao);
break;
case 5:
printf("\nSacando la media: ");
media (haber_estudiao);
break;
}
} while (opc !=0);
}
void almacenar (tPtrNodo *plista, int num){
tPtrNodo nuevo, aux;
nuevo = (tNodo *)malloc(sizeof(tNodo));
nuevo->dato = num;
nuevo->sig = (tNodo )NULL;
if (plista !=NULL) {
aux = *plista;
while (aux->sig!= NULL)
aux = aux->sig;
aux->sig = nuevo;
}
else
*plista = nuevo;
}
int buscar(tPtrNodo plista, int num){
tPtrNodo anterior, aux;
if (plista != NULL){
aux = *plista;
while ((aux->dato != num) && (aux->dato != NULL)){
anterior = aux;
aux = aux->sig;
}
if (aux->dato != num)
return aux->dato;
else
return aux->dato;
}
}
void borrar (tPtrNodo plista, int num){
tPtrNodo anterior, aux;
if (plista != NULL){
aux= *plista;
while ((aux->dato !=num)&&(aux->sig != NULL)){
anterior = aux;
aux = aux->sig;
}
if (aux->dato != num)
printf("\nNo existe");
else{
if (aux == *plista)
*plista = aux->sig;
else
anterior->sig = aux->sig;
free(aux);
}
}
}
void visualizar (tPtrNodo lista){
tPtrNodo aux;
aux = lista;
printf("\nLista: \n[ ");
while (aux != NULL){
printf("%d",aux->dato);
aux = aux->sig;
if (aux != NULL){
printf(" -> ");
}
}
printf(" ]");
}
void media (tPtrNodo lista){
tPtrNodo aux;
int i=0;
float x=0;
aux = lista;
if (aux != NULL){
while (aux != NULL){
i++;
x += aux->dato;
aux = aux->sig;
}
x = x/i;
printf("%f",x);
}
}