Ho realizzato questo programma, che stampa in ordine crescente i numeri inseriti, cosa mi consigliate di fare per fare un'ulteriore aggiunta che stampi i numeri ottenuti con un ordine che metta al primo posto il valore in mezzo alla sequenza dei numeri inseriti?
#include <stdlib.h>
#include <stdio.h>
struct nodo {
int info;
struct nodo *next;
};
/*
** leggi_lista
*/
struct nodo *leggi_lista(void) {
int a;
struct nodo *p, *primo;
primo = NULL;
printf("\nNumero:");
scanf("%d", &a);
while (a != 0) {
p =(struct nodo*) malloc(sizeof(struct nodo));
p->info = a;
p->next = primo;
primo = p;
printf("\nNumero:");
scanf("%d", &a);
}
return(primo);
}
/*
** stampa_lista
*/
void stampa_lista(struct nodo *primo) {
while (primo != NULL) {
printf("\n\n%d ", primo->info);
primo = primo->next;
}
return;
}
/*
** bubble_sort
*/
struct nodo *bubble_sort(struct nodo *primo) {
struct nodo *p, *ultimo;
int flag, appo;
ultimo = NULL;
flag = 1;
while (flag == 1) {
p = primo;
flag = 0;
while (p->next != ultimo) {
if (p->info > (p->next)->info) {
appo = p->info;
p->info = (p->next)->info;
(p->next)->info = appo;
flag = 1;
}
p = p->next;
}
ultimo = p;
}
return(primo);
}
/*
** main
*/
int main(void) {
struct nodo *primo;
printf("Inserisci gli elementi (0 per terminare):\n");
primo = leggi_lista();
primo = bubble_sort(primo);
stampa_lista(primo);
return(1);
}