LISTAS ENLAZADAS
Pares e impares de una lista
Haciendo uso de listas enlazadas, crearemos un programa que permita insertar elementos al inicio, eliminar elemento inicial, eliminar elemento final y por último eliminar todos los elementos de una lista. El programa también nos mostrará los elementos pares e impares de una lista.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct nodo{
int nro;
struct nodo*sgte;
};
typedef struct nodo*Tlista;
void eliminainicio(Tlista &);
void eliminafin(Tlista &);
void eliminalista(Tlista &);
void insertalinicio(Tlista &, int);
int pares(Tlista &);
int impares(Tlista &);
void imprimir(Tlista);
void main()
{
Tlista lista=NULL;
int opc,valor,n,i;
do{
cout<<"1.Insertar elementos:"<<endl;
cout<<"2.Eliminar al inicio:"<<endl;
cout<<"3.Eliminar al final:"<<endl;
cout<<"4.Pares de una lista:"<<endl;
cout<<"5.Impares de una lista:"<<endl;
cout<<"6.Listado:"<<endl;
cout<<"7.Salir:"<<endl;
cout<<"Ingrese una opcion:"<<endl;cin>>opc;
switch(opc)
{
case 1:{clrscr();
cout<<"Numero de elementos";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Ingrese elementos = ";cin>>valor;
insertalinicio(lista,valor);
}
break;
}
case 2:{clrscr();
cout<<"Elimina al inicio";
eliminainicio(lista);
break;
}
case 3: {clrscr();
cout<<"Elimina al final";
eliminafin(lista);
break;
}
case 4:{clrscr();
pares(lista);
cout<<"Los numeros pares son:"<<endl;
imprimir(lista);
break;
}
case 5:{clrscr();
impares(lista);
cout<<"Los numeros impares son:"<<endl;
imprimir(lista);
break;
}
case 6:{clrscr();
cout<<endl<<"Listado"<<endl;
imprimir(lista);
break;
}
}
}while(opc!=7);
clrscr();
}
void imprimir(Tlista lista)
{
while(lista!=NULL)
{
cout<nro<<endl;
lista=lista->sgte;
}
cout<<endl;
}
void insertalinicio(Tlista &lista,int valor)
{
Tlista q;
q=new(struct nodo);
q->nro=valor;
q->sgte=lista;
lista=q;
}
void eliminainicio(Tlista &lista)
{
struct nodo*p;
if(lista!=NULL)
{
p=lista;
lista=lista->sgte;
delete(p);
}
}
void eliminafin(Tlista &lista)
{
Tlista p,ant;
if(lista==NULL)return;
p=lista;
if(lista->sgte==NULL)
lista=lista->sgte;
else
{
while(p->sgte!=NULL)
{
ant=p;
p=p->sgte;
}
ant->sgte=NULL;
}
delete(p);
}
int pares(Tlista &lista)
{
Tlista p;
if(lista==NULL)
return 0;
while(lista!=NULL)
{
if(p->nro%2==0)
{
p->sgte=lista;
p=lista;
}
}return 1;
}
int impares(Tlista &lista)
{Tlista q;
if(lista==NULL)
return 0;
while(lista!=NULL)
{
if(q->nro%2!=0)
{
q->sgte=lista;
q=q->sgte;
}
} return 1;
}
Continuando con Listas enlazadas, les comparto el siguiente post: Busca, invierte y muestra elemento central de una lista