Visualizzazione dei risultati da 1 a 10 su 21

Visualizzazione discussione

  1. #9
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Forse non mi sono spiegato ... Io mi riferisco al codice del tuo ordinamento non dell'ultima versione di torn
    Ti sei spiegato benissimo, ma io sono un principiante.. Non so se rispondi cosi per farmi arrivare alla souzione da solo, o perché rispondi proprio cosi... Non ho capito...

    Facciamo così... Ti posto il codice, potresti gentilmente dirmi dove sta l'errore?
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    struct elemento{ 
    int valore; 
    struct elemento *next;
    };
    void menu();
    struct elemento *insElemento(struct elemento *); 
    struct elemento *ordLista(struct elemento *);
    void printElemento(struct elemento *);
    int main(){
     struct elemento *Lista=NULL ; 
     int comando; 
     do{
     menu(); 
     printf("\nComando:\t"); 
     scanf("%d", &comando); 
     
     switch(comando){  
     case 1:{   
     Lista=insElemento(Lista);   
     break;  
     }   
     case 2:{   
     Lista=ordLista(Lista);   
     break;  
     } 
     case 3:{
     printElemento(Lista);
     break;
     }
     } 
    }while(true);
    return 0; 
    }
    void menu(){ 
     printf("\n--------------------------"); 
     printf("\n1 - Inserisci Elemento\n"); 
     printf("2 - Ordinamento Lista\n"); 
     printf("3 - Visualizza Lista\n"); 
     printf("--------------------------\n");
    }
    //Inserimento elementi lista
    struct elemento *insElemento(struct elemento *list_head){    
    struct elemento *list_pointer, *list_record;    
    int i, n=0, val, newval; 
    printf("Specificare il numero di elementi della lista:  "); 
    scanf("%d", &n);    
    list_record = (struct elemento *)malloc(sizeof(struct elemento));    
    printf("\nInserisci il 1 elemento: ");    
    scanf("%d", &val); 
    list_record->valore = val; 
    list_head=list_record; 
    list_pointer = list_head; 
    for(i=2; i<=n; i++){          
     list_record->next = (struct elemento *)malloc(sizeof(struct elemento));          
     list_record = list_record->next;          
     printf("\nInserisci il %d elemento: ", i);          
     scanf("%d", &newval);          
     list_record->valore = newval;                 
    }        
    list_record->next = NULL;       
    list_pointer = list_head;
     
    printElemento(list_head);
    return (list_head);
    }  
    //Ordinamento Lista
    struct elemento *ordLista(struct elemento *list_head){
    struct elemento *list_pointer;
    int flag, temp; 
    flag=1;  
    while(flag ==1){ 
    flag=0;   
    list_pointer = list_head;        
    while(list_pointer->next!= NULL){      
    if(list_pointer->valore >(list_pointer->next)->valore){        
    temp = list_pointer->valore;        
    list_pointer->valore =(list_pointer->next)->valore;        
    (list_pointer->next)->valore = temp;        
    flag =1;//fino a quando esegue scambi continua       
    }          
    }     
    }    
    printElemento(list_head);//invio la lista alla funzione che stampa  
    return (list_head);
    }
    /*
    MIO VECCHIO ALGORITMO
    struct elemento *ordLista(struct elemento *list_head) {
    struct elemento *list_pointer, *list_record;
    int flag, temp;  
    list_record=NULL;
    flag = 1;  
    while (flag == 1) {    
    list_pointer = list_head;    
    flag = 0;    
    while (list_pointer->next != list_record) {      
    if (list_pointer->valore > (list_pointer->next)->valore) {        
    temp = list_pointer->valore;        
    list_pointer->valore = (list_pointer->next)->valore;        
    (list_pointer->next)->valore = temp;        
    flag = 1;      
    }      
    list_pointer = list_pointer->next;    
    }    
    list_record = list_pointer;  
    }      
    return list_head;}*/
     
    void printElemento(struct elemento *Lista){ 
                                                
    struct elemento *list_pointer = Lista;    
    printf("\nlista -> ");         
    while(list_pointer != NULL){            
    printf("%d", list_pointer->valore);                
    printf(" -> ");               
    list_pointer = list_pointer->next;          
    }     
    printf(" NULL"); 
    }
    Ultima modifica di Ronald940; 22-06-2014 a 18:05

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.