Buscar este blog

Mostrando entradas con la etiqueta Codigos de listas enlazadas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Codigos de listas enlazadas. Mostrar todas las entradas

16 de enero de 2010


Códigos de listas enlazadas
#include
#include
#include
int Recorrido(int Info[8],int Indice[8],int Inicio,int Disp)
int InsPr(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento)
{
clrscr();
int Info[8]={12,10,0,9,5,3,0,20};
int Indice[8]={5,7,6,1,-999,3,-999,4};
int Inicio=0,Disp=2,Elemento,Res;
cout<<"Lista Original\n";
Recorrido(Info,Indice,Inicio,Disp);
cout<<"Que Numero deseas Insertar?";
cin>>Elemento;
InsPr(Info,Indice,Inicio,Disp,Elemento);
getch();
}
void Recorrido(int Info[8],int Indice[8],int Inicio,int Disp)
{
int Apuntador=Inicio;
while(Apuntador!=-999)
{
cout<<
Apuntador=Indice[Apuntador];
}
}
void InsPr(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento)
{
if(Disp!=-999)
{
int Apuntador=Disp;
Disp=Indice[Disp];
Info[Apuntador]=Elemento;
Indice[Apuntador]=Inicio;
Inicio=Apuntador;
Recorrido(Info,Indice,Inicio,Disp);
}
else
cout<<"Overflow...";
}

{
void Recorrido(int Info[8],int Indice[8],int Inicio,int Disp);
void EliBusq(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento);

{
clrscr();
int Info[8]={12,10,0,9,5,3,0,20};
int Indice[8]={5,7,6,1,-999,3,-999,4};
int Inicio=0,Disp=2,Elemento,Res;
cout<<"Lista Original\n";
Recorrido(Info,Indice,Inicio,Disp);
cout<<"Que Numero deseas Eliminar?";
cin>>Elemento;
EliBusq(Info,Indice,Inicio,Disp,Elemento);
getch();
}
void Recorrido(int Info[8],int Indice[8],int Inicio,int Disp)
{
int Apuntador=Inicio;
while(Apuntador!=-999)
{
cout<<
Apuntador=Indice[Apuntador];
}
}
void EliBusq(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento)
{
int Temp=Inicio,Temp2;
if(Temp==-999)
{
cout<<"Lista Vacia... Imposible Eliminar";
return;
}
while(Temp!=-999)
{
if(Elemento==Info[Temp])
{
if(Temp==Inicio)
{
Inicio=Indice[Inicio];
else
Indice[Temp2]=Indice[Temp];
Indice[Temp]=Disp;
Disp=Temp;
Recorrido(Info,Indice,Inicio,Disp);
return;
}
else
{
Temp2=Temp;
Temp=Indice[Temp];
}
}
cout<<"Dato no encontrado... Imposible Eliminar";
return;
}

{
int Busqueda(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento);

{
clrscr();
int Info[8]={12,10,0,9,5,3,0,20};
int Indice[8]={5,7,6,1,-999,3,-999,4};
int Inicio=0,Disp=2,Elemento,Res;
cout<<"Que Numero deseas buscar?";
cin>>Elemento;
Res=Busqueda(Info,Indice,Inicio,Disp,Elemento);
if(Res==-999)
cout<<"Dato No Encontrado...";
getch();
}
int Busqueda(int Info[8],int Indice[8],int Inicio,int Disp,int Elemento)
{
int Apuntador=Inicio;
while(Apuntador!=-999)
{
if(Elemento==Info[Apuntador])
{
cout<<"Numero "<<<" encontrado...";
return Apuntador;
}
Apuntador=Indice[Apuntador];
}
return Apuntador;
}

{
int InsOrd(int Info[8],int Indice[8],int Inicio,int Elemento);
void Recorrido(int Info[8],int Indice[8],int Inicio,int Disp);
void InsNd(int Info[8],int Indice[8],int Inicio,int Disp, int Elemento, int Npos);

{
clrscr();
int Info[8]={12,10,0,9,5,3,0,20};
int Indice[8]={5,7,6,1,-999,3,-999,4};
int Inicio=0,Disp=2,Elemento,Res;
cout<<"Lista Original\n";
Recorrido(Info,Indice,Inicio,Disp);
cout<<"Que Numero deseas Insertar?";
cin>>Elemento;
Res=InsOrd(Info,Indice,Inicio,Elemento);
InsNd(Info,Indice,Inicio,Disp,Elemento,Res);
getch();
}
void Recorrido(int Info[8],int Indice[8],int Inicio,int Disp)
{
int Apuntador=Inicio;
while(Apuntador!=-999)
{
cout<<
Apuntador=Indice[Apuntador];
}
}
void InsNd(int Info[8],int Indice[8],int Inicio,int Disp, int Elemento, int Npos)
{
if(Disp!=-999)
{
int Apuntador=Disp;
Disp=Indice[Disp];
Info[Apuntador]=Elemento;
if(Npos==-999)
{
Indice[Apuntador]=Inicio;
Inicio=Apuntador;
}
else
{
Indice[Apuntador]=Indice[Npos];
Indice[Npos]=Apuntador;
}
Recorrido(Info,Indice,Inicio,Disp);
}
else
cout<<"Overflow...";
}
int InsOrd(int Info[8],int Indice[8],int Inicio,int Elemento)
{
int Temp=-999,Temp2;
if(Inicio==Temp||Elemento
return Temp;
Temp=Inicio;
Temp2=Indice[Inicio];
while(Temp2!=-999)
{
if(Elemento
return Temp;
Temp=Temp2;
Temp2=Indice[Temp2];
}
return Temp;
}
{
void Recorrido(char Info[8][2],int Indice[8],int Inicio,int Disp);

{
clrscr();
char Info[8][2]={{"G"},{"I"},{" "},{"T"},{"O"},{"A"},
{" "},{"T"}};
int Indice[8]={5,7,6,1,-999,3,-999,4};
int Inicio=0,Disp=2;
cout<<"El Recorrido es:\n";
Recorrido(Info,Indice,Inicio,Disp);
getch();
}
void Recorrido(char Info[8][2],int Indice[8],int Inicio,int Disp)
{
int Apuntador=Inicio;
while(Apuntador!=-999)
{
cout<
Apuntador=Indice[Apuntador];
getch ();
return 0;
}
main()
{
int OP;
do{
clrscr ();
float s,r,m,d;
cout<<"MENU PRINCIPAL"<
cout<
cout<<"1.- INSERTAR NODO"<
cout<<"2.- ELIMINAR NODO"<
cout<<"3.- BUSCAR NODO"<
cout<<"4.- RECORRIDO NODO"<
cout<<"5.- VISUALIZAR"<
cout<<"6.- SALIR"<
cout<
cout<<"elige una opcion"<
cin>>OP;
switch (OP){
case 1:insertar();break;
case 2:eliminar();break;
case 3:busqueda();break;
case 4:recorrido();break;
case 5:visualizar();break;
}
}while(OP!=6);
getch();
return 0;
}
CÓDIGOS DE LISTA
#include
#include
#include
void funcion2(int **,int ,int ,int );
void funcion1(int **,int ,int ,int );
int origen;
void funcion1(int **M,int n,int or,int dest)
{
int cont=0;
for(int i=0;i
{
if(M[or][i] == 1)
{
cout << i;

for (int j=0;j
if (M[i][j] == 1)
cont++;
if (cont == 1)
M[or][i] = 0;
if (i!=dest)
funcion2(M,n,i,dest);
else
{
cout << "\n" << origen-1;
funcion1(M,n,origen-1,dest);
}
}
}
}

void funcion2(int **M,int n,int or,int dest)
{
int cont=0;
for(int i=0;i
{
if(M[or][i] == 1)
{
cout << i;

for (int j=0;j
if (M[i][j] == 1)
cont++;
if (cont == 1)
M[or][i] = 0;
if (i!=dest)
funcion1(M,n,i,dest);
else
{
cout << "\n" << origen-1;
funcion2(M,n,origen-1,dest);
}
}
}
}
void main()
{
int **M, n, or, dest, con, aux;
clrscr();
cout << "Ingrese cantidad de nodos : ";
cin >> n;

M = new int*[n];
for (int i=0;i
M[i] = new int [n];
for (i=0;i
for (int j=0;j
{
if (i==j)
{
printf(" NO EXISTE conexion entre (%d,%d)\n",i+1,j+1);
M[i][j] = 0;
}
else
{
printf(" Hay conexion (%d,%d) 1/si 0/no = ",i+1,j+1);
cin >> con;
M[i][j] = con;
}
}

for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}

printf("Ingrese nodo origen (del 1 al %d) : ",n);
cin >> origen;
printf("Ingrese nodo destino (del 1 al %d) : ",n);
cin >> dest;

or = origen-1;
dest = dest-1;


// en caso que el origen sea distinto a la primera posision en la matriz
// de adyacencia, reordena la matriz para que as¡ sea...
if (or != 0)
{
for (i=0;i
{
aux = M[0][i];
M[0][i] = M[or][i];
M[or][i] = aux;
}

cout << "\n";
for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}
getche();

for (i=0;i
{
aux = M[i][0];
M[i][0] = M[i][or];
M[i][or] = aux;
}
cout << "\n";
for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}
getche();
}
// en caso que el destino sea distinto a la ultima posision en la matriz
// de adyacencia, reordena la matriz para que as¡ sea...
if (dest != (n-1))
{
for (i=0;i
{
aux = M[0][i];
M[0][i] = M[dest][i];
M[dest][i] = aux;
}
cout << "\n";
for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}
getche();
for (i=0;i
{
aux = M[i][0];
M[i][dest] = M[i][dest];
M[i][dest] = aux;
}
cout << "\n";
for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}
getche();
}
for (i=0;i
{
for (j=0;j
cout << " " << M[i][j];
cout << "\n";
}
getche();

//restringe la busqueda para que no entre en loop
for (i=0;i<=n;i++)
M[i][or] = 0;

for (j=0;j<=n;j++)
M[dest][j] = 0;

cout << "\n";
for (i=0;i<=n;i++)
{
for (j=0;j<=n;j++)
cout << " " << M[i][j];
cout << "\n";
}

getche();
cout << or;
funcion1(M,n,or,dest);
getche();
}
 
CÓDIGO DE LISTAS
#include
#include
       struct nodoLista{
char dato;
struct nodoLista *ptrsig; /*apuntador al siguiente nodo*
typedef struct nodoLista NodoLista;
typedef NodoLista *ptrNodoLista;
void insertar(ptrNodoLista *ptrS,char valor);
main(){
char eliminar (ptrNodoLista *ptrS,char valor);
void imprime(ptrNodoLista ptrActual);
int vacia(ptrNodoLista ptrS);
//void ptrNodoLista ptrInicial=NULL;/*No existen nodos*/
int opc;
char elemento;
do{
printf("---Menu---\n");
printf("1..Insertar\n");
printf("2..Eliminar\n");
printf("3..Salir\n");
printf("opc:");scanf("%d",&opc);
switch(opc){
case 1:
system("cls");
printf("Introduzca Caracter:");scanf("\n%c",&elemento);
insertar(&ptrInicial,elemento);
imprime(ptrInicial);
system("cls");
break;
case 2:
system("cls");
if(!vacia(ptrInicial)){
printf("Introduzca elemento a Eliminar:");scanf("\n%c",&elemento);
/*si encuentra el carater lo remueve*/
if(eliminar(&ptrInicial,elemento)){
printf("Caracter eliminado\n");
imprime(ptrInicial);
}else printf("No se encuentra el caracter %c\n",elemento);
}/*fin del if*/
else printf("La lista esta vacia\n");
system("cls");
break;
case 3:exit(0);
break;
default rintf("Opcion Invalidad\n");
}
}while(opc!=3);
getch();
return 0;
}
void insertar(ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrNuevo; /*apuntador nuevo nodo*/
ptrNodoLista ptrAnterior;/*apuntador a un nodo anterior*/
ptrNodoLista ptrActual;/*apuntador al nodo actual*/
ptrNuevo=(struct nodoLista*)malloc(sizeof(NodoLista));/*crea un nodo*/
if(ptrNuevo!=NULL){
ptrNuevo->dato=valor;
ptrNuevo->ptrsig=NULL;
ptrAnterior=NULL;
ptrActual=*ptrS;
/*localiza la ubicacion correcta de la lista*/
while(ptrActual!=NULL && valor> ptrActual->dato){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;/*siguiente nodo*/

/*insertar un nuevo nodo al principio de la lista*/
if(ptrAnterior==NULL){
ptrNuevo->ptrsig = *ptrS;
*ptrS=ptrNuevo;
}else{
ptrAnterior->ptrsig=ptrNuevo;
ptrNuevo->ptrsig=ptrActual;
}
}
/*fin de if*/
else printf("No se inserto dato no hay espacio disponible en memoria");
}/*fin de la funcion insertar*/
char eliminar (ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrAnterior;
ptrNodoLista ptrActual;
ptrNodoLista ptrTemp;/*apuntador a un nodo temporal*/
/*eliminar primer nodo*/
if(valor==(*ptrS)->dato){
ptrTemp=*ptrS;/*almacena el nodo a eliminar*/
*ptrS=(*ptrS)->ptrsig;/*desata el nodo*/
free(ptrTemp);/*libera memoria del nodo desatado*/
return valor;
}/*fin del if*/
else {
ptrAnterior=*ptrS;
ptrActual=(*ptrS)->ptrsig;
while(ptrActual!=NULL && ptrActual->dato !=valor){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;
}
/*elimina nodo actual*/
if(ptrActual!=NULL){
ptrTemp=ptrActual;
ptrAnterior->ptrsig=ptrActual->ptrsig;
free(ptrTemp);
return valor;
}
}/*fin else*/
getch();
}/*fin dela funcion eliminar*/
void imprime(ptrNodoLista ptrActual){
if(ptrActual==NULL)printf("La lista esta vacia\n");
else{
/*mientras no sea el final de la lista*/
while(ptrActual!=NULL){
printf("%c->",ptrActual->dato);
ptrActual=ptrActual->ptrsig;
}
printf("NULL\n");
}/*fin del else*/
getch();
}
}/*fin de la funcion imprimir*/
int vacia(ptrNodoLista ptrS){
return ptrS==NULL;
}/*fin dela funcion vacia*/