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);
}