Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c] liste linkate

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724

    [c] liste linkate

    sapete darmi qualche link per la creazione di liste linkate ed ordinamenti in c???
    grazie

  2. #2
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Non ho ben capito: cerchi un algoritmo per ordinare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    sia implementazione della lista linkata che un algo per ordinare

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho appena realizzato questo semplice esempio: c'è l'implementazione della lista linkata ed il programma la usa per creare una ilsta con 10 nodi con valori casuali, poi la ordina.
    codice:
    #include <stdio.h>
    
    /* Implementazione della lista Linkata */
    struct Lista {
       int dato;                 /* Dato contenuto in questo nodo */
       struct Lista* prossimo;   /* Link al prossimo elemento */
    };
    
    /* Questa procedura si occupa di inserire un elemento in un nodo
     * e di creare il nodo successivo, senza doverlo fare a manina
     * per tutti e 10 gli elementi
     */
    void creaElemento(struct Lista *lst, int d) {
       lst->dato = d;
       lst->prossimo = (struct Lista*) malloc(sizeof(struct Lista));
       lst->prossimo->dato = -1;   /* Così so che quifinisce la lista */
    }
    
    void ordinaLista(struct Lista *lst);                /* Implementata dopo */
    void scambia(struct Lista *l1, struct Lista *l2);   /* Implementata dopo */
    
    int main() {
       struct Lista *lst;
       struct Lista *ptr;
       int i;
       
       srand(time(NULL));   /* Inizializzo il seme del generatore di numeri casuali */
       lst = (struct Lista*) malloc(sizeof(struct Lista));   /* Alloco la lista (1° elemento) */
       ptr = lst;   /* Memorizzo il puntatore */
       
       /* Popolo la lista con elementi casuali */
       for(i=0; i<10; i++) {
          creaElemento(lst, rand());
          lst = lst->prossimo;
       }
       
       lst = ptr;   /* Riposiziono il puntatore */
       
       /* Stampo la lista non ordinata */
       printf("Lista disordinata:\n");
       for (i=0; i<10; i++) {
          printf("Elemento di posizione %d nella lista: %d\n", i, lst->dato);
          lst = lst->prossimo;
       }
       
       lst = ptr;   /* Riposiziono il puntatore */
       
       ordinaLista(lst);   /* Ordino la lista */
    
       /* Stampo la lista che ora è ordinata */
       printf("\n\nLista ordinata:\n");
       for (i=0; i<10; i++) {
          printf("Elemento di posizione %d nella lista: %d\n", i, lst->dato);
          lst = lst->prossimo;
       }
    
       return 0;
    }
    
    void scambia(struct Lista *l1, struct Lista *l2) {
       int datoTmp;   /* Dato temporaneo */
       datoTmp = l1->dato;
       l1->dato = l2->dato;
       l2->dato = datoTmp;
    }
    
    void ordinaLista(struct Lista *lst) {
       struct Lista *ptr = lst;    /* Memorizzo l'indirizzo */
       struct Lista *prec = lst;   /* Devo memorizzare il puntatore al valore precedente */
       
       while(lst->prossimo->dato > 0) {   /* Fino alla fine della lista */
          while (lst->prossimo->dato > 0) {   /* Fino alla fine della lista */
             if (ptr->dato > lst->prossimo->dato) {
                scambia(ptr, lst->prossimo);   /* Scambio i due elementi */
             }
             lst = lst->prossimo;
          }
          ptr = ptr->prossimo;
          lst = ptr;
       }
    }
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    grazie mille... A risentirci

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.