/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Orientenme p.f.

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
BUCLE



Registrado: 16 Feb 2005
Mensajes: 69

MensajePublicado: 17/10/2005 8:21 am
Título: Orientenme p.f.

Hola a todos,alguien me podría orientar acerca de como convertir el siguiente módulo para que al tiempo que me vaya capturando números los vaya mandando al nodo pero en orden ascendente?

//Asi declaro la estructura
typedef struct NODOS{
int dato;
NODOS* liga;
}NODO;
NODO* p;
NODO* q;
NODO* t;
NODO* x;

//Este es el módulo de captura que necesito cambiar para que me vaya ordenando todo ascendentemente y después de ésto ya los mande al nodo con la liga que le corresponda de acuerdo a si el número es mayor o menor.

void crea_inicio(){
clrscr();
if (bandera==1){
cout<<"Inicio Creado Exitosamente !"<<endl<<endl;
cout<<"Presione Cualquier Tecla para Regresar -> ";
getch();
clrscr();
menu();
}
else{
NODO* q;
char resp='s';
p=(NODO*)malloc(sizeof(NODO));
cout<<"Inserte Dato P: -> ";
cin>>p->dato;
p->liga=NULL;
do{
q=(NODO*)malloc(sizeof(NODO));
cout<<"Inserte Dato Q: -> ";
cin>>q->dato;
q->liga=p;
p=q;
cout<<"¿Desea Seguir Capturando? (s/n) : ";
cin>>resp;
tolower(resp);
}
while(resp=='s');
}
bandera=1;
clrscr();
menu();
}[/code]
Volver arriba
fralex



Registrado: 11 Jul 2005
Mensajes: 112

MensajePublicado: 17/10/2005 11:54 pm
Título: oreden ascendente en listas

Oye pues en realidad no entiendo muy bien tú código pero si lo que quieres es ir ordenando los elementos de la lista en forma ascendente tendrías que hacer algo como esto :(como te dije, no capto la lógica de tú código pero te pondré esto a manera de ejemplo).

Código:

void llenar(void)/*función llamada para crear nuevos nodos y llenarlos con valores enteros*/
{

AUX=(struct lista *)malloc(sizeof(struct lista));/*AUX apunta al nuevo nodo creado*/

   clrscr( );
   printf("Introduce un numero: ");
   scanf("%d",&AUX->num);
   AUX->sig=NULL;
   if (CAB==NULL)/*CAB apunta al nodo cabeza(primer nodo de la lista)*/
      CAB=AUX;
   else if (CAB->num > AUX->num)
   {
      AUX->sig=CAB;
      CAB=AUX;
   }
   else
   {
      P=F=CAB;
      while (P->num < AUX->num && P!=NULL)
      {
         if (P==CAB) P=P->sig;
         else
         {
            P=P->sig;
            F=F->sig;
         }
      }
      AUX->sig=F->sig;
      F->sig=AUX;
   }
}


esta es la estructura de mi ejemplo:
Código:

struct lista
{
   int num;

   struct lista *sig;
}*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;



Este es un ejemplo que consegui hace un tiempo porai cuando me tocó ver listas enlazadas simples y la verdad me parecio muy facil de entender y desde entonces lo adopté como propio.

Entonces para introducir los valores solo tienes que hacer la llamada a la función llenar() tantas veces como valores quieras introducir y con los movimientos que se hacen con los punteros se logrará hacer una ordenación ascendente de todos los números que se introduzcan.

Espero entiendas y te sirva este ejemplo tanto como me sirvio a mí.

suerte Exclamation

p.d: si quieres ver el código completo solo pidelo y lo postearé.Es uncódigo de ejemplo bien sencillo y fácil de entender.
_________________
Que viva el che,el lenguaje c y la banda ancha...
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com