0% encontró este documento útil (0 votos)
32 vistas4 páginas

Listas Procedimientos

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas4 páginas

Listas Procedimientos

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

INSERTAR AL INICIO

*************************************************
#include <iostream.h>
struct nodo { int nro;
struct nodo *sgte;
};
void main(void)
{ struct nodo *lista; // puntero a inicio de lista
struct nodo *q; // variable de trabajo
int i, n;
lista = NULL; // inicializa la lista
cout<<”Número de elementos:”;
cin>> n;
for (i=0; i<n; i++)
{ cout<<”Elemento: “<<i + 1<<”: “;
q = new (struct nodo); // asigna espacio
cin>>q->nro;
q-> sgte = lista;
lista=q;
}
cout<<endl<<”Listado: “<<endl;
q = lista;
while ( q != NULL )
{ cout<<q->nro<<endl;
q = q->sgte;
}
} // fin main
*******************************************
INSERTAR AL FINAL
*******************************************
#include <iostream.h>
struct nodo { int nro;
struct nodo *sgte;
};
void main(void)
{ struct nodo *lista, *nuevo, *anterior;
int n, i;
cout <<”Número de elementos:”; cin>>n;
lista = NULL; // inicializa la lista
for (i=0; i<n; i++)
{ cout <<”Elemento “<< i + 1<< “: “;
nuevo =new (struct nodo);
cin>>nuevo->nro;
nuevo->sgte = NULL;
if (lista==NULL)
{ lista = nuevo;
anterior=nuevo;
}
else
{ anterior->sgte=nuevo;
anterior=nuevo;
}
121/306
}
cout<<endl<<”Listado: “<<endl;
nuevo = lista;
while (nuevo!=NULL)
{ cout << nuevo->nro<<endl;
nuevo=nuevo->sgte;
}
}
**************************************************
INSERTAR ELEMENTO EN UN APOSICION DADA
****************************************************
void insertaEnPosicion(TLista &lista, int valor, int pos)
{ TLista q, t;
int i;
q=new (struct nodo); // reserva espacio
q->nro= valor; // asigna 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<<”Error… Posición equivocada”<<endl;
}
********************************************************
ELIMINAR
**********************************+++
void eliminaInicio(TLista &lista)
{
struct nodo *p;
if (lista!=NULL)
{ p=lista;
lista=lista->sgte;
delete(p);
}
}
-------------------------------
void eliminaFinal(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);
}
-------------------------------------------
void eliminaElemento(TLista &lista, int valor)
{
TLista p, ant;
p=lista;
while(p!=NULL)
{ if (p->nro==valor)
{ if (p==lista)
lista=lista->sgte;
else
ant->sgte=p->sgte;
delete(p);
return;
}
ant=p;
p=p->sgte;
}
}
-----------------------------------------
void eliminaLista (TLista &lista)
{
TLista p;
while(lista!=NULL)
{ p=lista;
lista=lista->sgte;
delete(p);
}
}
-------------------------------------
***********************************************
ELEMENTOS REPETIDOS ELIMINAR
void eliminaRepetidos(TLista lista)
{ TLista q, p, r, ant;
int num;
q=lista;
while (q!=NULL)
{ num=q->nro;
ant=q;
r=q->sgte;
while (r!=NULL)
{if (num == r->nro)
{ ant->sgte= r->sgte;
cout<<”Eliminando…”<<num<<endl;
p=r;
r=r->sgte;
delete(p);
}
else { ant=r;
r=r->sgte;
}
//r=r->sgte;
} // fin while
q=q->sgte;
} // fin while
}
***************************************
INVERTIR ELEMENTOS DE UNA LISTA
*****************************************
void invertir(TLista &lista)
{ TLista a, b, t;
if(lista==NULL) return;
a=lista;
b=lista->sgte;
lista->sgte=NULL;
while(b!=NULL)
{ t = b->sgte;
b->sgte = a;
a=b;
b=t;
}
lista=a;
}
*************************************
JUNTAR DOS LISTAS EN UNA TERCERA
**********************************
void uneListas(TLista &lista1, TLista &lista2, TLista &lista3)
{ TLista p =lista1;
if (lista1!=NULL)
{ while (p->sgte!=NULL)
p=p->sgte;
p->sgte=lista2;
lista3=lista1;
}
else lista3=lista2;
lista1=NULL; // anula lista1
lista2=NULL; // anula lista2
}
**********************************
ORDENAMIENTO BURBUJA PARA LISTAS
********************************
void Burbuja(TLista lista)
{ TLista actual, siguiente, marca;
int t;
marca=NULL;
while(marca!=lista->sgte)
{ actual=lista;
siguiente=actual->sgte;
while(siguiente!=marca)
{ if (actual->nro > siguiente->nro)
{ t=siguiente->nro;//PONER LOS DATOS DE LA LISTA
siguiente->nro=actual->nro;
actual->nro=t;
}
actual=actual->sgte;
siguiente=actual->sgte;
}
marca=actual;
}
} // fin Burbuja( )

**************

También podría gustarte