ciao a tutti, premetto che sto appena capendo le liste ho provato ad implementare una lista di n elementi, ma l'output della lista che dovrebbe essere ordinata è sbagliato.
Questo è il codice:
forze in questa istruzione c'è qualcosa che non va?codice:#include<stdio.h> #include<stdlib.h> struct elemento{ int info; struct elemento *next; }; typedef struct elemento ELEMENTO; ELEMENTO *crea_lista(int n); ELEMENTO *somma(ELEMENTO*,ELEMENTO*); void visualizza(ELEMENTO*); void BubbleSort_lista(ELEMENTO *p,int n); int main(){ int n; scanf("%d",&n); ELEMENTO *punta_lista; punta_lista=malloc(sizeof(ELEMENTO)); printf("Inserisci gli elementi nella 1° lista: \n"); *punta_lista=*crea_lista(n); BubbleSort_lista(punta_lista,n); printf("\nLa lista ordinata è: \n"); visualizza(punta_lista); return 0; } ELEMENTO *crea_lista(int n){ ELEMENTO *p,*paus; int i; if (n==0) p=NULL; else { // creazione del 1° nodo p=malloc(sizeof(ELEMENTO)); printf("dammi l'informazine\n"); scanf("%d",&p->info); paus=p; } for (i=1;i<n;i++){ paus->next=malloc(sizeof(ELEMENTO)); paus=paus->next; printf("dammi l'informazine\n"); scanf("%d",&paus->info); } paus->next=NULL; return p; } void BubbleSort_lista(ELEMENTO *p,int n){ ELEMENTO *sort; if (n==0) return; // se lista vuota esci else{ int flag,temp; do { flag=0; for ( ;sort->next!=NULL;sort=sort->next){ if (sort->info>(sort->next)->info){ temp=sort->info; sort->info=(sort->next)->info; (sort->next)->info=temp; flag=1; } } } while (flag); // finchè c'è almeno uno scambio, ricomincia il ciclo } } void visualizza(ELEMENTO *p){ printf("Punta_lista---->"); while (p!=NULL){ printf(" %d ",p->info); p=p->next; } printf(" NULL "); }
Ringrazio tutti in anticipo.codice:for ( ;sort->next!=NULL;sort=sort->next){

Rispondi quotando