Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] funzione per lista..

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct NUM{int num; struct NUM *punt_num;};
    
    typedef struct NUM numero;
    typedef numero *lista;
    
    void inizializza(lista*);
    void inserisci(lista*,int);
    void visualizza(lista*);
    void visualizza_pari(lista*);
    void max(lista*);
    
    void main() {
    	int opzione,num;
    	lista ls;
    	
    	while(opzione!=9999)
    	{
    opzione=0;
    	printf("Digita\n");
    	printf("-1 per inizializzare\n");		
    	printf("-2 per inserire un numero in testa alla lista\n");	
    	printf("-3 per visualizzare tutti gli elementi della lista\n");
    	printf("-4 per mostrare gli elementi della lista in posizione pari\n");
    	printf("-5 per mostrare il valore max presente nella lista\n\n");
    	scanf("%d",&opzione);
    			if(opzione==1){
    				inizializza(&ls);
    			}
    			if(opzione==2){
    				num=0;
    				printf("Inserisci il numero da inserire in testa alla lista\n");
    				while(num!=99999){
    					scanf("%d",&num);
    					inserisci(&ls,num);}
    
    					printf("\nLa lista aggiornata contiene questi numeri:\n");
    				visualizza(&ls);
    			}
    			if(opzione==3){
    				printf("La lista contiene questi numeri:\n");
    				visualizza(&ls);
    			}
    			if(opzione==4){
    				printf("La lista contiene in posizione pari questi numeri:\n");
    				visualizza_pari(&ls);
    			}
    			if(opzione==5){
    				printf("Il numero max presente nella lista e':\n");
    				max(&ls);
    			}
    	}
    
    }
    
    
    void inizializza(lista *lst){
    	if(*lst==NULL){
    		printf("La lista e' stata gia' inizializzata\n\n");
    	}
    	else {
    	*lst=NULL;
    	printf("La lista e' stata inizializzata correttamente\n\n");}
    }
    
    void inserisci(lista *lst,int n){
    
    	lista ls;
    	ls=(numero *)malloc(sizeof(numero));
    	ls->num=n;
    	ls->punt_num=*lst;
    	*lst=ls;
    }
    
    void visualizza(lista *lst){
    	lista ls;
    	ls=*lst;
    	while(ls!=NULL){
    	printf("%d\n",ls->num);
    	ls=ls->punt_num;
    	}
    }
    
    void visualizza_pari(lista *lst){
    	int cont=0;
    	lista ls;
    	ls=*lst;
    	while(ls!=NULL){
    	cont++;
    	if(cont%2==0){
    	printf("%d\n",ls->num);
    	ls=ls->punt_num;
    	}
    	else
    	ls=ls->punt_num;
    	}
    }
    
    void max(lista *lst){
    	int max,temp;
    	lista ls;
    	ls=*lst;
    		max=ls->num;
    		temp=ls->num;
    		
    		while(ls!=NULL){
    			if(temp>max){
    				max=temp;
    				temp=ls->num;
    				ls=ls->punt_num;
    			}
    		}
    printf("\n%d",max);
    
    
    }

    ho questo codice..
    ma la funzione per il max nn funziona..
    in cosa sbaglio?
    premetto che sono un principiante..

  2. #2
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    così a occhio sembra che non ti sposti nella lista se temp non è maggiore di max.
    Prova a mettere ls=ls->punt_num fuori dall'if che controlla se temp>max ed il controllo fallo così
    codice:
    if(ls->num > max)
               max=ls->num;
    ls=ls->punt_num;

  3. #3
    come non detto..
    sistemata..


    codice:
    void max(lista *lst){
    	int max,temp;
    	lista ls;
    	ls=*lst;
    
    		max=ls->num;
    		while(ls!=NULL){
    		
    
    			if(ls->num>max){
    				max=ls->num;
    				
    
    				
    			}
    			ls=ls->punt_num;
    		}
    printf("%d\n",max);
    
    
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.