Listas enlazadas
Sumar una lista enlazada
Hacer un programa que permita ingresar al inicio, al final, y en posición y permita calcular la suma de la lista.
#include <iostream.h>
#include <conio.h>
#include
struct nodo{
int nro;
struct nodo *sgte;
};
typedef struct nodo *Tlista;
void insertarinicio(Tlista &,int);
void insertarfinal(Tlista &,int);
void insertaenpos(Tlista &,int,int);
void imprimir(Tlista);
int suma(Tlista &);
void main()
{
Tlista lista= NULL;
int opc,valor,pos;
do{
cout<<"1. Insertar al Inicio"<<endl;
cout<<"2. Insertar al final"<<endl;
cout<<"3. Insertar en posicion"<<endl;
cout<<"4. Suma de la lista"<<endl;
cout<<"5. Lista"<<endl;
cout<<"6. Salir"<<endl;
cout<<"Ingrese una opcion:";
cin>>opc;
switch(opc)
{
case 1:{clrscr();
cout<<"Valor a insertar al inicio:";
cin>>valor;
cout<<endl;
insertarinicio(lista,valor);
break;
}
case 2: {clrscr();
cout<<"Valor a insertar al final:";
cin>>valor;
cout<<endl;
insertarfinal(lista,valor);
break;
}
case 3: {clrscr();
cout<<"Valor a insertar en posicion:";
cin>>valor;
cout<<"Posicion:";
cin>>pos;
insertaenpos(lista,valor,pos);
cout<<endl;
break;
}
case 4: {clrscr();
cout<<"La suma de la lista es:"<<suma(lista);
cout<<endl<<endl;
break;
}
case 5:{clrscr();
cout<<endl<<"Listado"<<endl;
imprimir(lista);
break;
}
}
} while(opc!=6);
}
void insertarinicio(Tlista &lista, int valor)
{ Tlista q;
q = new(struct nodo);
q->nro=valor;
q->sgte=lista;
lista=q;
}
void insertarfinal(Tlista &lista,int valor)
{Tlista t,q;
q=new(struct nodo);
q->nro=valor;
q->sgte=NULL;
if(lista==NULL)
lista=q;
else
{
t=lista;
while(t->sgte!=NULL)
t=t->sgte;
t->sgte=q;
}
}
void insertaenpos(Tlista &lista,int valor, int pos)
{Tlista q,t;
int i;
q=new(struct nodo);
q->nro=valor;
if(pos==1)
{q->sgte=lista;
lista=q;
}
else
{t=lista;
for(i=1;t!=NULL;i++)
{
if(i==pos-1)
{q->sgte=t->sgte;
t->sgte=q;
return;
}
t=t->sgte;
}
}
cout<<"posicion equivocada"<<endl;
}
int suma(Tlista &lista)
{
int s=0;
while(lista!=NULL)
{s=s+lista->nro;
lista=lista->sgte;
}
return s;
}
void imprimir(Tlista lista)
{ while(lista!=NULL)
{cout<nro<<endl;
lista=lista->sgte;
}
cout<<endl;
}
Continuando con Listas enlazadas, les comparto el siguiente post: Intercalar dos listas en una tercera lista, y calcular la resta