Programma in C che prende in input e ordina dimanicamente una lista di interi

Posted on at


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

}

 


About the author

darkrei

cool filmannex user

Subscribe 0
160