Programma in C realizzato con qt creator
#include <stdio.h>
#include <stdlib.h>
struct nodo
{
int num;
struct nodo* next;
};
void stampa(struct nodo* nodo,bool flag,int quantita);
void listaLibera(struct nodo* nodo);
int main()
{
struct nodo* head = NULL;
bool flag = true;
int quantita;
printf("Quanti numeri devi ordinare? ");
scanf("%d", &quantita);
for (int i = 0; i < quantita; ++i)
{
struct nodo* nuovo_nodo = (struct nodo*) malloc(sizeof(struct nodo));
printf("Inserisci un numero intero (%d/%d): ",i+1,quantita);
int numero;
scanf("%d", &numero);
nuovo_nodo->num = numero;
if (head == NULL || nuovo_nodo->num < head->num)
{
nuovo_nodo->next = head;
head = nuovo_nodo;
}
else
{
struct nodo* it = head;
while (it->next != NULL && it->next->num < nuovo_nodo->num)
it = it->next;
nuovo_nodo->next = it->next;
it->next = nuovo_nodo;
}
}
printf("\n\n");
stampa(head,flag,quantita);
listaLibera(head);
return 0;
}
void stampa(struct nodo* nodo, bool flag, int quantita)
{
if (nodo == NULL)
{
printf("\n");
return;
}
if(flag == true)
{
printf("Ecco i %d numeri in ordine crescente: ",quantita);
flag=false;
}
printf("%d ", nodo->num);
stampa(nodo->next,flag,quantita);
}
void listaLibera(struct nodo* nodo)
{
if (nodo == NULL)
return;
listaLibera(nodo->next);
free(nodo);
}