• Viernes 8 de Noviembre de 2024, 16:50

Autor Tema:  Lista Circulares  (Leído 1102 veces)

RoChIsA

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Lista Circulares
« en: Lunes 2 de Abril de 2007, 16:19 »
0
hola bueno resien me acabo de integrar a este grupo ps necesito ayuda para poder tener una buena exposion el dia miercoles quisiera que alguien me ayude a desifrar todo el codigo que acontinuacion le dare a conocer claro algunas cosa no ?

para estar seguro lo que dire ok bueno de ante mano gracia roberto.....

#include<stdio.h>
#include<graphics.h>
#include<dos.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>

struct nodo
{int inf;
nodo *ant; //agregar
nodo *liga;
};
nodo *p, *q, *t;

void inicializar();
void ingresar();
void mostrar();
void buscar();
void insertarant();
void eliminar();
void insertardes();
void datoeliminar();
void graficos();



main()
{
  inicializar();
  ingresar();
  mostrar();
  graficos();
  buscar();
  insertarant();
  mostrar();
  graficos();
  clrscr();
  buscar();
  insertardes();
  mostrar();
  graficos();
  clrscr();
  datoeliminar();
  eliminar();
  mostrar();
  graficos();
  getch();
  return(0);
}

void inicializar()
{
clrscr();
p=NULL;
q=NULL;
t=NULL;}

void ingresar()
{
int dato ;
while(dato!=0)
{
 cout<<"INGRESE DATO: ";
 cin>>dato;
 if(dato!=0)
  {
    if(p==NULL)
    {
     p=new nodo;
     t=p; //agregar
     p->inf=dato;
     p->liga=p; //cambiar NULL por p
//     t=p;
    }
    else
    {
     q=new nodo;
     q->inf=dato;
     q->liga=p; //cambiar  NULL por p
     t->liga=q;
     t=q;
    }
  }
 }
}

void mostrar()
{
 q=p;
 cout<<endl;
 cout<<"Datos Ingresados:" ;
 {
 do {
 cout<<endl;
 cout<<q->inf;
  q=q->liga;
  } while(q!=p);//cambiar NULL por p
   }
  getch();
  }


void buscar()
{
 clrscr();
 int ref;
 char x,v,f;
 cout<<endl;
 cout<<"_______________________\n";
 cout<<" Ingrese Referencia:   \n";
 cout<<"_______________________\n";
 cin>>ref;
 x=f;
 q=p;
 while(x!=v&&q!=NULL)
 {
  if(q->inf==ref)
   x=v;
  else
  {
   t=q;
   q=q->liga;
  }
 }
}
void insertarant()
{
 int dato;
 char x,v,f;
 if(x==v)
 {
  cout<<endl;
 cout<<"\nAntes de Referencia\n";
 cout<<"Ingresar Dato:";
 cin>>dato;
  if(q==p)
  {
   q=new nodo;
   q->inf=dato;
   q->liga=p;
   p=q;
  }
  else
  {
   q=new nodo;
   q->inf=dato;
   q->liga=t->liga;
   t->liga=q;
   t=q;
  }
 }
 else
 cout<<"No existe referencia";
}
void insertardes()
//NO CIRCULAR
{
 int dato;
 char x,v,f;
 if(x==v)
 {
  cout<<endl;
  cout<<"\nDespues de la Referencia\n";
  cout<<"Ingresar Dato:";
  cin>>dato;
  if(q->liga==NULL)
  {
   t=q;
   q=new nodo;
   q->inf=dato;
   q->liga=NULL;
   t->liga=q;
  }
  else
  {
   t=q;
   q=new nodo;
   q->inf=dato;
   q->liga=t->liga;
   t->liga=q;
  }
 }
 else
 cout<<"NO EXISTE REFERENCIA\n";
}
void eliminar()
//NO CIRCULAR
{
 if(p==q)
 {
  p=q->liga;
  delete q;
 }
 else
 {
  if(q->liga==NULL)
  {
   t->liga=NULL;
   delete q;
  }
  else
  {
   t->liga=q->liga;
   delete q;
  }
 }
}

void datoeliminar()
{
 int ref;
 char x,v,f;
 cout<<endl;
 cout<<"\nDato a eliminar:";
 cin>>ref;
 x=f;
 q=p;
 while(x!=v&&q!=NULL)
 {
  if(q->inf==ref)
   x=v;
  else
  {
   t=q;
   q=q->liga;
  }
 }
}

bueno el modo graafico no lo pongo ps esta ententible y pido esta ayuda es por quisiera estar seguro lo que quiero dar a conocer ok bueno gracia

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Lista Circulares
« Respuesta #1 en: Lunes 2 de Abril de 2007, 16:31 »
0
:lol:  :lol:  :lol:  :lol:  :lol:

Aqui explican con detalle:

http://c.conclase.net/edd/index.php?cap=004
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


RoChIsA

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Lista Circulares
« Respuesta #2 en: Lunes 2 de Abril de 2007, 16:39 »
0
muchas gracias por esta ayuda pero sabes quisera que me dijas por que en las lista circulares siempre q liga a punta a p

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Lista Circulares
« Respuesta #3 en: Lunes 2 de Abril de 2007, 18:42 »
0
:lol:  :lol:  :lol:


mmmm, me imagino que liga es el tipo para declarar todos los nodos en la estructura y p es el tipo para declarar punteros a un nodo...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]