Tarea De Algoritmos
UNIVERSIDAD Continental
Calidad que se acredita internacionalmente
Tarea N° 2
Listas circular y doblemente enlazada
CURSO:
Algoritmia y Estructura De Datos
ALUMNO:
------------------------------------------------------------------------------------------------
SEMESTRE:
TERCERO
DOCENTE:
ING. Rojas Moreno Carol Roxana
HUANCAYO- PERU
Lista circular
//listas circulares
#include <iostream>
#include <string>
#define MAX 100
using namespace std;
struct nodo
{int dato;
nodo *sig;
};
typedef nodo *pnodo;
class lista
{ private:
pnodo pL;
public:
lista();
~lista();
void insertar_comienzo();
void insertar_final();
void insertar_despues();
void eliminar_inicio();
void eliminar_final();
void buscar();
pnodo buscar_despues(int x);
void buscar_anterior();
void imprimir();
system("pause");
};
lista::lista()
{
pL = pL;
}lista::~lista()
{ pnodo p,q;
if ( pL != NULL )
{ p = pL;
while ( p != NULL )
{ q = (*p).sig;
delete p;
p = q; }
pL=p;
p=pL;
}
}
void lista::insertar_comienzo()
{
pnodo nuevo;
int valor;
cout<<" INGRESE DATO: "; cin>>valor;
nuevo = new nodo;
(*nuevo).dato = valor;
(*nuevo).sig = pL;
pL = nuevo;
nuevo = pL;
}
void lista::insertar_final()
{ pnodonuevo,aux;
int valor;
nuevo = new nodo;
cout <<"INGRESE DATO: "; cin>>valor;
(*nuevo).dato = valor;
(*nuevo).sig = NULL;
if ( pL == NULL )
pL = nuevo;
else
{ aux = pL;
while ( (*aux).sig != NULL )
aux = (*aux).sig;
(*aux).sig = nuevo;
}
}
void lista::insertar_despues()
{ pnodo nuevo,r,temp;
int num;
nuevo=new nodo;
cout<<" INGRESE DATO: ";cin>>(*nuevo).dato;
cout<<" INGRESE DESPUES DEL ALUMNO CON CODIGO ";
r=lista::buscar_despues(num);
if(r==NULL)
cout<<" LISTA VACIA, NO SE ENCONTRO NADA ";
else
{ temp=(*r).sig;
if(temp!=NULL)
{ (*r).sig=nuevo;
(*nuevo).sig=pL;
}
else //delo contrario
{ (*nuevo).sig=pL;
(*r).sig=nuevo;
}
}
}
void lista::buscar()
{ pnodo pos;
int valor, ban=0; cout<<"Ingrese dato:"; cin>>valor;
if ( pL == NULL )
{ cout<<"LISTA VACIA";
pos=pL;
}
else
{ pos = pL;
while ( pos != NULL)
{ if((*pos).dato != valor)
{ pos = (*pos).sig;
ban=1;
}
else
{ ban=0;
break;
}
}
if(ban==0)
{ cout<<" ENCONTRADO ";
}
else
{ cout<<" NO ENCONTRADO ";
}
}
}
pnodo lista::buscar_despues(int valor)
{ pnodopos;
int ban=0;
if ( pL == NULL )
{ cout<<" LISTA VACIA ";
pos=pL;
}
else
{ pos = pL;
while ( pos != NULL)
{ if((*pos).dato != valor)
{ pos = (*pos).sig;
ban=1;
}
else
{ ban=0;
break;
}
}
if(ban==0)
{ cout<<"ENCONTRADO"; }
else
{ cout<<"NO ENCONTRADO"; }
}
return pos;
}
void lista::buscar_anterior()
{ pnodo pos,p;
int valor,ban=0;cout<<"Ingrese dato: "; cin>>valor;
pos = pL;
p = pL;
while(p!=pL)
{ if ( (*p).dato != valor)
{ ban=1;
pos = p;
p = (*p).sig;
}
else
{ ban=0;
break;
}
}
if(ban==0)
{ cout<<"ENCONTRADO: "<<(*pos).dato ;
}
else
{ cout<<"NO ENCONTRADO"; }
}
void lista::eliminar_inicio()
{ pnodo aux;
if(pL==NULL)
{ cout<<"lista vacia"; } else
{ aux=pL;
if((*pL).sig==pL)
{ pL=NULL; }
else
{ pL=(*pL).sig; }
cout<<"EL ELEMENTO SE ELIMINO "<<(*aux).dato;
delete aux;
}
}
void lista::eliminar_final()
{ pnodo aux=pL, temp;
if(pL==NULL)
{ cout<<"LISTA VACIA "; }
else
{ if((*pL).sig==pL)
{ pL=pL; }
else
{ while((*aux).sig!=pL)
{ temp=aux;
aux=(*aux).sig;
}
(*temp).sig=pL;
}...
Regístrate para leer el documento completo.