Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

listas ligadas en C

batiguason_11

Bovino adicto
Desde
27 Jun 2009
Mensajes
703
Soy un noob programando usando listas ligadas y me surgio una duda al momento de ordenar una lista ligada por burbuja, creo mi funcion para hacerlo pero aparentemente no entra ni siquiera a la funcion me podrian ayudar o decirme si mis operaciones que realizo son correctas :S

Código:
#include<stdio.h>
#include <stdlib.h>
typedef struct insertar {
    int x;
    struct insertar *sig;
}NODO;
NODO *raiz,inicio;
void insertar_o (int a) {
    raiz->sig=(NODO*)malloc(sizeof(NODO));
    raiz=raiz->sig;
    raiz->x=a;
    raiz->sig=NULL;
}
void imprimir() {
    while(raiz) {
        printf("\nX= %i",raiz->x);
        raiz=raiz->sig;
    }
}
void burbuja() {
    NODO *aux;
    int i,l,temp;
    raiz=inicio.sig;
    aux=(NODO *)malloc(sizeof(NODO));
    aux=raiz->sig;
    for(i=1;i<10;i++)
        for (l=1;l<10;l++) {
            if (raiz->x > aux->x) {
                temp=raiz->x;
                raiz->x=aux->x;
                raiz=raiz->sig;
                raiz->x=temp;
                aux=raiz->sig;
            }
            else {
                raiz=raiz->sig;
                aux=raiz->sig;
            }
        }
}
main() {
    int y,j;
    inicio.sig=NULL;
    raiz=&inicio;
    for (j=1;j<10;j++) {
        printf("\nDame x ");
        scanf("%i",&y);
        insertar_o(y);
    }
    burbuja();
    raiz=inicio.sig;
    imprimir();
    return 0;
}
 
viejo aqui te dejo este codigo es mio, mira a ver si te sirve para resolver tu duda
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<alloc.h>

struct articulo{
char codigo[10],
estudiante[30],
asignatura[20],
profesor[30],
notas[20];
articulo *sig;};

void insertar (articulo **p);
void mostrar (articulo *p);

void main(void)
{
int opc;
articulo *cab;
cab=NULL;

do{
clrscr();
cout<<"1. ingresar datos"<<endl;
cout<<"2. mostrar lista"<<endl;
cout<<"3. salir"<<endl;
cin>>opc;
switch(opc){
case 1:insertar(&cab);break;
case 2:mostrar(cab);break;
}

}while(opc!=3);

}


void insertar(articulo **p)
{
articulo*nuevo,*q;
nuevo=(articulo*)malloc(sizeof(articulo));
cout<<"digite el codigo: ";
gets(nuevo->codigo);
cout<<"nombre del estudiante: ";
gets(nuevo->estudiante);
cout<<"digite la asignatura: ";
gets(nuevo->asignatura);
cout<<"digite nombre del profesor: ";
gets(nuevo->profesor);
cout<<"digite la nota: ";
gets(nuevo->notas);
nuevo->sig=NULL;
if(*p==NULL)
{*p=nuevo;
}else{
nuevo->sig=*p;
*p=nuevo;
}
}

void mostrar(articulo *p)
{
articulo *q;
q=p;
while(q!=NULL){
cout<<"codigo: "<<q->codigo<<endl;
cout<<"estudiante: "<<q->estudiante<<endl;
cout<<"asignatura: "<<q->asignatura<<endl;
cout<<"profesor: "<<q->profesor<<endl;
cout<<"nota: "<<q->notas<<endl;
q=q->sig;
}getch();
}
 
gracias por el código aunque no lo entiendo y al parecer mi codigo no pasa por el bucle de la burbuja y se me hace bastante raro, no soy un experto en esto pero no sé si algo en mi codigo no este bn :S
 
Volver
Arriba