Hola pruebalo ahora hice unas correcciones pequeñas solamente saludos
Código (c) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>
typedef struct punt{
int dato;
struct punt *sig;
}nodo;
void insertar(nodo **lista,int i);
void suma(nodo **lista);
void mostrar(nodo **lista);
int main(void){
int i;
nodo *lista=NULL;
for(i=1;i<=100;i++){
if(i%2==0)
insertar(&lista,i);
}
mostrar(&lista);
suma(&lista);
system("pause");
return(0);
}
void insertar(nodo **lista, int i){
nodo *nuevo,*ultimo;
nuevo=(nodo*)malloc(sizeof(nodo));
nuevo->dato=i;
if(*lista==NULL){
nuevo->sig=NULL;
*lista=nuevo;
}else{
ultimo=*lista;
while(ultimo->sig!=NULL)
ultimo=ultimo->sig;
// cierre while
ultimo->sig=nuevo;
nuevo->sig=NULL;
// cierre if
}// cierre else
}// cierre funcion
void suma(nodo **lista){
int total=0;
nodo *aux;
if(*lista!=NULL){
aux=*lista;
while(aux->sig!=NULL){
total+=aux->dato;
aux=aux->sig;
}
}//cierre if
printf("\nTotal de la lista: %d\n",total);
}//cierre funcion
void mostrar(nodo **lista){
nodo *aux=*lista;
if(*lista!=NULL){
while(aux!=NULL){
printf("[%d]\n",aux->dato);
aux=aux->sig;
}//cierre while
}//cierre if
}//cierre funcion