Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using namespace System;
- CLista::CLista(void)
- {
- inicio=NULL;
- final=NULL;
- }
- CLista::~CLista(void)
- { }
- void CLista::Insertar_al_inicio(int pdato)
- {
- CNodo *nuevo;
- nuevo = new CNodo();
- nuevo->Set_dato(pdato);
- nuevo->Set_next(NULL);
- if(inicio==NULL)
- final=nuevo;
- else
- nuevo->Set_next(inicio);
- inicio=nuevo;
- }
- void CLista::Insertar_al_final(int pdato)
- {
- CNodo *nuevo;
- nuevo = new CNodo();
- nuevo->Set_dato(pdato);
- nuevo->Set_next(NULL);
- if(final==NULL)
- inicio=nuevo;
- else
- final->Set_next(nuevo);
- final=nuevo;
- }
- int CLista::Sumar()
- {
- int suma;
- CNodo* p;
- if(inicio!=NULL)
- {
- p=inicio;
- while(p!=NULL)
- {
- suma+=p->Get_dato();
- p=p->Get_next();
- }
- return suma;
- }
- else
- return 0;
- }
- bool CLista::Verificar_si_existe(int pdato)
- {
- CNodo *p;
- p=inicio;
- while(p!=NULL)
- {
- if(p->Get_dato()==pdato)
- return true;
- p=p->Get_next();
- }
- return false;
- }
- void CLista::Eliminar_al_inicio()
- {
- CNodo *p;
- CNodo *q;
- if(inicio!=NULL)
- {
- p = inicio;
- inicio = inicio->Get_next();
- delete p;
- }
- }
- void CLista::Eliminar_el_ultimo()
- {
- CNodo *p;
- CNodo *q;
- if(inicio!=NULL)
- {
- if(inicio->Get_next()==NULL)
- inicio=NULL;
- else
- {
- p=inicio;
- while(p->Get_next()!=NULL)
- {
- q=p;
- p=p->Get_next();
- }
- q->Set_next(NULL);
- final = q;
- delete p;
- }
- }
- }
- int CLista::Obtener_mayor()//Devolver 0 si la lista esta vacia
- {
- CNodo* p;
- int mayor=-9999;
- if(inicio!=NULL)
- {
- p=inicio;
- while(p!=NULL)
- {
- if(p->Get_dato()>mayor)
- mayor=p->Get_dato();
- p=p->Get_next();
- }
- return mayor;
- }
- else
- return 0;
- }
- int CLista::Obtener_menor()//Devolver 0 si la lista esta vacia
- {
- CNodo* p;
- int menor=9999;
- if(inicio!=NULL)
- {
- p=inicio;
- while(p!=NULL)
- {
- if(p->Get_dato()<menor)
- menor=p->Get_dato();
- p=p->Get_next();
- }
- return menor;
- }
- else
- return 0;
- }
- // metodos para recorrer la lista
- void CLista::Recorrer_lista()
- {
- CNodo *p;
- if(inicio!=NULL)
- {
- while(p->Get_next()!=NULL)
- p=p->Get_next();
- }
- }
- void CLista::Imprimir_lista()
- {
- CNodo *p;
- p=inicio;
- int k=0;
- while(p!=NULL)
- {
- k++;
- printf("Dato[%d]=> %d\n",k,p->Get_dato());
- p=p->Get_next();
- }
- }
- void CLista::Imprimir_al_revez()
- {
- CLista* Nueva;
- int k = 0;
- CNodo* p;
- p = inicio;
- while(p!=NULL)
- {
- p=p->Get_next();
- k++;
- }
- while(k!=0)
- {
- p=final;
- printf("%d\n",p->Get_dato());
- Eliminar_el_ultimo();
- k--;
- }
- }
- void CLista::Barajar_lista()
- {
- ///1. Crear una lista auxiliar y esta va a tomar los datos de la lista original de la siguiente manera
- CLista *Nueva;
- Nueva = new CLista();
- //2. Este nodo va recorrer la lista de tal forma que dara los valores a la lista nueva
- CNodo* p;
- p = inicio;//aca p tienes asignado la memoria del incio y por ello tiene el valor del incio
- //EJEMPLO si inicio=50=AAE11.....Luego P=inicio....entonces P=50=AAE11
- //3. Los valores se pondran en cualquier poscion de la lista(barajar) usando las funicones
- //Insetar al final o Insertar al incio entonces para realizar esto creamos una variable "numero" que tomara
- //los valores 1 y 2 para hacer el random de las funcioens en un switch por ejemplo:
- //si 1=>Insertar_al_final()
- //si 2=>Insertar_al_inicio()
- //4. Por ultimo imprimimos la Nueva lista
- System::Random ^R = gcnew System::Random(System::DateTime::Now.Ticks);
- int numero=0;
- while(p!=NULL)
- {
- numero=R->Next(0,2);
- switch(numero)
- {
- case 0:
- Nueva->Insertar_al_inicio(p->Get_dato());
- break;
- case 1:
- Nueva->Insertar_al_final(p->Get_dato());
- break;
- }
- p=p->Get_next();
- }
- Nueva->Imprimir_lista();
- delete Nueva;//Borramos la lista nueva para no perder el orden de la original
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement