1. Genere una lista enlazada con números consecutivos desde el 2 al n, luego obtenga todos los números primos mediante la criba de Erastostenes. Este método consiste en eliminar todos los múltiplos del primer elemento luego elim inar todos los múltiplos del segundo elemento y así sucesivamente Los números que queden en la lista serán los primos. #include
using namespace std; struct Nodo{ int info; Nodo *sgte; }; typedef Nodo *Lista; void insertaAlInicio(Lista &L,int x); void ingresoDeDatos(Lista &L); void reporteDeDatos(Lista L); void cribaErastotenes(Lista &L); int main(int argc, char *argv[]) { Lista L=NULL; ingresoDeDatos(L); reporteDeDatos(L); cribaErastotenes(L); cout<<"Numeros primos"<info = x; nuevo->sgte=L; L=nuevo; }
void ingresoDeDatos(Lista &L) { int i,x,n; cout<<"Numero de elementos : "; cin>>n; for(i=n;i>=2;i--) { insertaAlInicio(L,i); } } void reporteDeDatos(Lista L) { Lista p; p=L; cout<<"Datos de la lista "<info<sgte; } cout<
void cribaErastotenes(Lista &L) { Lista p,q,a; p=L; while(p->sgte!=NULL) { a=p; q=p->sgte;
while(q!=NULL) { if(q->info%p->info==0) { a->sgte=q->sgte; delete q; q=a->sgte; } else{ a=q; q=q->sgte; } }p=p->sgte; }
}
5. Escriba una función recursiva para imprimir una lista al revés. #include using namespace std; struct Nodo{ int info; Nodo *sgte; }; typedef Nodo *Lista; void insertaAlInicio(Lista &L,int x); void ingresoDeDatos(Lista &L, int n); void reporteDeDatos(Lista L); void listaReves(Lista L); int main(int argc, char *argv[]) {
Lista L=NULL; int n; cout<<"Numero de elementos : "; cin>>n; ingresoDeDatos(L, n); reporteDeDatos(L); cout<<"Lista al reves: "<info = x; nuevo->sgte=L; L=nuevo; } void ingresoDeDatos(Lista &L, int n) { int i,x; for(i=1;i<=n;i++) { cout<<"Elemento "<>x; insertaAlInicio(L,x); } } void reporteDeDatos(Lista L) { Lista p;
p=L; cout<<"Datos de la lista "<info<sgte; } cout<
} void listaReves(Lista L) { if(L!=NULL) { listaReves(L->sgte); cout<info< using namespace std; struct dato{ int suma; struct dato *sgte; }; typedef struct dato *Lista; void IngresoLista (int n , Lista &lista); void ImprimeLista (int n , Lista lista); int main(int argc, char *argv[]) { Lista lista = NULL; int n; cout<<"Ingrese la cantidad de datos: ";
cin>>n; IngresoLista(n,lista); ImprimeLista(n,lista); return 0;
} void IngresoLista (int n , Lista &lista){ Lista q; for(int i = 0 ;i>q->suma; //enlace q->sgte=lista; lista =q; } } void ImprimeLista (int n , Lista lista){ int s=0; while(lista!=NULL){ cout<<"Dato : "<suma<suma; lista =lista->sgte; }
cout<<"La suma de los datos es : "< #include #include
using namespace std;
struct nodo{ int info; struct nodo *sgte; }; typedef struct nodo *Lista;
void Inicializa(Lista &); void Visualizar(Lista ); void mostrarUltimosElementos(Lista, int); int main() { Lista L=NULL; int m; Inicializa(L); cout<<"Datos ingresados"<>m; mostrarUltimosElementos(L,m); }
void Inicializa(Lista &L) { int i,n,t; Lista p,q; cout<<"Cantidad de elementos :"; cin>>n; for(i=0;i
cout<>t; q= new (struct nodo); q->info=t; if(L==NULL) { q->sgte=L; L=q; p=q; } else { p->sgte=q; q->sgte=NULL; p=q; } }
} void Visualizar(Lista L) { struct nodo *p; p=L; while(p!=NULL) { cout<info<sgte; } cout<
{ struct nodo *p; p=L; int n=0,c=0; while(p!=NULL) { n++; p=p->sgte; } p=L; while(p!=NULL) { c++; if(c>=n-m+1) cout<info<sgte; } }
9. Se tiene una lista de películas cada una tiene horas, minutos y segundos de duración. Muestre todas las películas ascendentemente según su duración. Use listas enlazadas
#include #include #include using namespace std; struct Pelicula{ char nombre[50]; int horas; int minutos; int segundos;
}; struct nodo{ Pelicula info; struct nodo *sgte; }; typedef struct nodo *Lista; void Inicializa(Lista &); void Visualizar(Lista ); void ordenar(Lista ); void DuracionDeCadaMes(Lista); int main() { Lista L=NULL; float b,a; CrearLista(L); Inicializa(L); cout<<"Datos ingresados"<
void Inicializa(Lista &L) { int i,n; Pelicula t; Lista p,q; // p es un puntero al nuevo nodo // q es el nuevo elemento a insertar cout<<"Numero de Peliculas :";cin>>n; for(i=0;i
{ cout<>t.nombre; cout<<"Duracion de la Pelicula :"<>t.horas; cout<<"minutos : "; cin>>t.minutos; cout<<"segundos : "; cin>>t.segundos; q= new (struct nodo); // le asigna espacio q->info=t;
// almacena los valores leidos
if(L==NULL) { q->sgte=L; L=q; p=q; } else { p->sgte=q; q->sgte=NULL; p=q; } } }
void Visualizar(Lista L) {
Lista p; p=L; while(p!=NULL) { cout<<"nombre : "<info.nombre<<"Duracion :"<info.segundos<<"hs."<info.minutos<<"min."<info.horas<<"seg."<sgte; } cout<sgte; while(q!=NULL) { if(p->info.horas>q->info.horas) { temp=p->info; p->info=q->info; q->info=temp; } else if(p->info.horas==q->info.horas) if(p->info.minutos>q->info.minutos) { temp=p->info;
p->info=q->info; q->info=temp; } else if(p->info.minutos==q->info.minutos) if(p->info.segundos>q->info.segundos) { temp=p->info; p->info=q->info; q->info=temp; } q=q->sgte; } p=p->sgte; }
} 10.-
#include using namespace std; struct Nodo{ int info; Nodo *sgte; }; typedef Nodo *Lista; void insertaAlInicio(Lista &L,int x); void ingresoDeDatos(Lista &L, int n); void reporteDeDatos(Lista L); void eliminaTodosElementosRep(Lista &L, int x); int main() { Lista L=NULL;
int n,x; char se; cout<<"Numero de elementos : "; cin>>n; ingresoDeDatos(L, n); reporteDeDatos(L); do{ cout<<"Ingrese el numero a eliminar"; cin>>x; cout<<"Lista sin Elementos Repeditos "<>se; }while(se=='s'); return 0; } void insertaAlInicio(Lista &L,int x) { Lista nuevo; nuevo = new Nodo; nuevo->info = x; nuevo->sgte=L; L=nuevo; } void ingresoDeDatos(Lista &L, int n) { int i,x; for(i=1;i<=n;i++) { cout<<"Elemento "<
cin>>x; insertaAlInicio(L,x); }
} void reporteDeDatos(Lista L) { Lista p; p=L; cout<<"Datos de la lista "<info<sgte; } cout<
while(L!=NULL && L->info==x) { temp=L; L=L->sgte; delete temp; } if(L!=NULL) { ant=L; p=L->sgte; while(p!=NULL)
{ if(p->info==x) { ant->sgte=p->sgte; delete p; p=ant->sgte; } else { ant=p; p=p->sgte; } } } }
14.- Dada una lista enlazada verificar si esta se encuentra ordenada ascendentemente. #include using namespace std; struct Nodo{ int info; Nodo *sgte; }; typedef Nodo *Lista; void insertaAlInicio(Lista &L,int x); void ingresoDeDatos(Lista &L, int n); void reporteDeDatos(Lista L); bool versiListaOrdenada(Lista &L); int main() { Lista L=NULL; int n;
cout<<"Numero de elementos : "; cin>>n; ingresoDeDatos(L, n); reporteDeDatos(L); cout<<"Verificar si esta ordenada "<info = x; nuevo->sgte=L; L=nuevo; } void ingresoDeDatos(Lista &L, int n) { int i,x; for(i=1;i<=n;i++) { cout<<"Elemento "<>x; insertaAlInicio(L,x); } } void reporteDeDatos(Lista L) { Lista p; p=L; cout<<"Datos de la lista "<
while(p!=NULL) { cout<info<sgte; } cout<
} bool versiListaOrdenada(Lista &L) { Lista p, q; p=L;
if(p->info>=q->info) { return true; }return false; }