se me habia pasado poner el codigo no lo estaba poniendo para que me lo hicieran ya resolvi mi duda muchas gracias..
#include <stdlib.h>
#include <stdio.h>
int opcion=0,nvalor=0,borrar=0,seguir=0,seguir2=0,acum=0,i=0,j=0;
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
}
tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
void Insertar(Lista *l, int v);
void Borrar(Lista *l, int v);
int ListaVacia(Lista l);
void BorrarLista(Lista *);
void MostrarLista(Lista l);
void PromedioLista(Lista I);
int main()
{
Lista lista = NULL;
pNodo p;
do
{
printf("\n 1)Insertar elementos. 2)Mostrar elementos. 3)Borrar elementos . \n4) Borrar toda la lista. 5)Promedio \n");scanf("%d",&opcion);
if(opcion==1)
{
do
{
printf("\n Introduzca el valor de la lista: ");scanf("%d",&nvalor);
Insertar(&lista, nvalor);
printf("\n desea introducir otro valor en la lista: (1) Si (2) No: ");scanf("%d",&seguir);
}
while(seguir==1);
}
else
{
if(opcion==2)
{
printf("\n Mostrar la lista\n");
MostrarLista(lista);
}
else
{
if(opcion==3)
{
do
{
printf("\n Valor de la lista a borrar: ");scanf("%d",&borrar);
Borrar(&lista, borrar);
MostrarLista(lista);
printf("\n Desea borrar otro elemento de la lista : (1) Si (2) No: ");scanf("%d",&seguir);
}
while(seguir==1);
}
else
{
if(opcion==4)
{
printf("\n Borrar toda la Lista :");
BorrarLista(&lista);
MostrarLista(lista);
}
else
{
if (opcion ==5)
{
printf ("\nPromedio\n");
PromedioLista(lista);
}
}
}
}
}
printf("\n Desea realizar otra operacion: (1) Si (2) No ");scanf("%d", &seguir2);
}while(seguir2==1);
/*Insertar(&lista, 20);
Insertar(&lista, 10);
Insertar(&lista, 40);
Insertar(&lista, 30);*/
/*MostrarLista(lista);*/
/*Borrar(&lista, 10);
Borrar(&lista, 15);
Borrar(&lista, 45);
Borrar(&lista, 30);
Borrar(&lista, 40);
MostrarLista(lista);*/
/*BorrarLista(&lista);
getchar();*/
return 0;
}
void Insertar(Lista *lista, int v)
{
pNodo nuevo, anterior;
nuevo = (pNodo)malloc (sizeof(tipoNodo));
nuevo->valor = v;
if(ListaVacia(*lista) || (*lista)->valor > v)
{
nuevo->siguiente = *lista;
*lista = nuevo;
acum= acum+v;
}
else
{
anterior = *lista;
while(anterior->siguiente && anterior->siguiente->valor <= v)
anterior = anterior->siguiente;
nuevo->siguiente = anterior->siguiente;
anterior->siguiente = nuevo;
}
i=i+acum;
j++;
}
void Borrar(Lista *lista, int v)
{
pNodo anterior, nodo;
nodo = *lista;
anterior = NULL;
while(nodo && nodo->valor < v)
{
anterior = nodo;
nodo = nodo->siguiente;
}
if(!nodo || nodo->valor != v) return;
else {
if(!anterior)
*lista = nodo->siguiente;
else
anterior->siguiente = nodo->siguiente;
free(nodo);
}
}
int ListaVacia(Lista lista)
{
return (lista == NULL);
}
void BorrarLista(Lista *lista)
{
pNodo nodo;
while(*lista) {
nodo = *lista;
*lista = nodo->siguiente;
free(nodo);
}
}
void MostrarLista(Lista lista)
{
pNodo nodo = lista;
if(ListaVacia(lista)) printf(" Lista vacía\n");
else
{
while(nodo)
{
printf("%d -> ", nodo->valor);
nodo = nodo->siguiente;
}
printf("\n");
}
}
void PromedioLista (Lista lista)
{
float prom=0.0;
pNodo nodo = lista;
if(ListaVacia(lista)) printf(" Lista vacía\n");
else
{
prom = (acum/j);
}
printf ("\nPROMEDIO:\n %.2f\n", prom);
}
#include <stdlib.h>
#include <stdio.h>
int opcion=0,nvalor=0,borrar=0,seguir=0,seguir2=0,acum=0,i=0,j=0;
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
}
tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
void Insertar(Lista *l, int v);
void Borrar(Lista *l, int v);
int ListaVacia(Lista l);
void BorrarLista(Lista *);
void MostrarLista(Lista l);
void PromedioLista(Lista I);
int main()
{
Lista lista = NULL;
pNodo p;
do
{
printf("\n 1)Insertar elementos. 2)Mostrar elementos. 3)Borrar elementos . \n4) Borrar toda la lista. 5)Promedio \n");scanf("%d",&opcion);
if(opcion==1)
{
do
{
printf("\n Introduzca el valor de la lista: ");scanf("%d",&nvalor);
Insertar(&lista, nvalor);
printf("\n desea introducir otro valor en la lista: (1) Si (2) No: ");scanf("%d",&seguir);
}
while(seguir==1);
}
else
{
if(opcion==2)
{
printf("\n Mostrar la lista\n");
MostrarLista(lista);
}
else
{
if(opcion==3)
{
do
{
printf("\n Valor de la lista a borrar: ");scanf("%d",&borrar);
Borrar(&lista, borrar);
MostrarLista(lista);
printf("\n Desea borrar otro elemento de la lista : (1) Si (2) No: ");scanf("%d",&seguir);
}
while(seguir==1);
}
else
{
if(opcion==4)
{
printf("\n Borrar toda la Lista :");
BorrarLista(&lista);
MostrarLista(lista);
}
else
{
if (opcion ==5)
{
printf ("\nPromedio\n");
PromedioLista(lista);
}
}
}
}
}
printf("\n Desea realizar otra operacion: (1) Si (2) No ");scanf("%d", &seguir2);
}while(seguir2==1);
/*Insertar(&lista, 20);
Insertar(&lista, 10);
Insertar(&lista, 40);
Insertar(&lista, 30);*/
/*MostrarLista(lista);*/
/*Borrar(&lista, 10);
Borrar(&lista, 15);
Borrar(&lista, 45);
Borrar(&lista, 30);
Borrar(&lista, 40);
MostrarLista(lista);*/
/*BorrarLista(&lista);
getchar();*/
return 0;
}
void Insertar(Lista *lista, int v)
{
pNodo nuevo, anterior;
nuevo = (pNodo)malloc (sizeof(tipoNodo));
nuevo->valor = v;
if(ListaVacia(*lista) || (*lista)->valor > v)
{
nuevo->siguiente = *lista;
*lista = nuevo;
acum= acum+v;
}
else
{
anterior = *lista;
while(anterior->siguiente && anterior->siguiente->valor <= v)
anterior = anterior->siguiente;
nuevo->siguiente = anterior->siguiente;
anterior->siguiente = nuevo;
}
i=i+acum;
j++;
}
void Borrar(Lista *lista, int v)
{
pNodo anterior, nodo;
nodo = *lista;
anterior = NULL;
while(nodo && nodo->valor < v)
{
anterior = nodo;
nodo = nodo->siguiente;
}
if(!nodo || nodo->valor != v) return;
else {
if(!anterior)
*lista = nodo->siguiente;
else
anterior->siguiente = nodo->siguiente;
free(nodo);
}
}
int ListaVacia(Lista lista)
{
return (lista == NULL);
}
void BorrarLista(Lista *lista)
{
pNodo nodo;
while(*lista) {
nodo = *lista;
*lista = nodo->siguiente;
free(nodo);
}
}
void MostrarLista(Lista lista)
{
pNodo nodo = lista;
if(ListaVacia(lista)) printf(" Lista vacía\n");
else
{
while(nodo)
{
printf("%d -> ", nodo->valor);
nodo = nodo->siguiente;
}
printf("\n");
}
}
void PromedioLista (Lista lista)
{
float prom=0.0;
pNodo nodo = lista;
if(ListaVacia(lista)) printf(" Lista vacía\n");
else
{
prom = (acum/j);
}
printf ("\nPROMEDIO:\n %.2f\n", prom);
}