Esercizio lista collegata con puntatori in c

di il
5 risposte

Esercizio lista collegata con puntatori in c

Salve a tutti è il mio primo post in questo forum e spero di fare tutto bene e nel rispetto delle regole:
è un paio di giorni che provo a implementare una lista che mi serve per l'orale di un esame; l'esercizo è il seguente:
scrivere la funzione c che opera nel modo seguente:
-riceve in ingresso una lista collegata con puntatori "list" di valori interi;
-riceve in ingresso un valore intero x>0 e modifica la lista di ingresso sommando insieme sotto-liste di x elementi consecutivi ed assegnando il valore della somma al primo elemento della sottolista. Gli x-1 elementi successivi al primo sono rimossi dalla lista finale;
- restituisce tra i parametri formali il numero di elementi finali della lista. la funzione restituisce anche come valore di ritorno un "boolean" "FALSE" o "TRUE" a seconda,rispettivamente, che la lista sia o meno vuota.


struct list{
int value;
struct list *next_ptr;
};




l'intestazione dell'esercizio è questa...io ho provata a farla ma con scarsi risultati se potreste darmi una mano mi salvereste la vita perchè è abbastanza urgente se avete bisogno di chiarimenti per l'esercizio basta chiedere! grazie mille in anticipo

5 Risposte

  • Re: Esercizio lista collegata con puntatori in c

    No ... l'esame devi farlo tu e l' "urgenza" non è un motivo valido ...

    Prova a scrivere qualcosa e ne parliamo ...
  • Re: Esercizio lista collegata con puntatori in c

    Ok ti incollo direttamente il programma o c'è qualche procedimento particolare?
  • Re: Esercizio lista collegata con puntatori in c

    Indenta il codice, copia incolla, utilizza i tag CODE, spiegalo, indica i problemi e dove si manifestano (secondo te) con quali dati ...
  • Re: Esercizio lista collegata con puntatori in c

    Ok perfetto:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    
    typedef unsigned short int boolean;
    #define TRUE 1
    #define FALSE 0
    
    
    int main(void);
    boolean addlist(struct list**ptrptr,int x);
    
    		struct list {
    	int value;
    	struct list * next_ptr;
    };
    
    
    
    
    		int main()
    		{
    			struct list **ptrptr;
    			int x;
    
    			addlist(struct list**ptrptr,int x);
    			return(0);
    		}
    
    boolean addlist(struct list**ptrptr,int x)
    {
    	boolean found;
    	struct list *tmp_ptr;
    	if(*ptrptr==NULL)
    		found=FALSE;
    		else
    		{
    			found=TRUE;
    			while(*ptrptr!=NULL)
    			{
    				while(x!=0)
    				{
    					tmp_ptr=*ptrptr;
    					ptrptr=&((*ptrptr)->next_ptr);
    					tmp_ptr->value=tmp_ptr->value+*ptrptr->value;
    					*ptrptr=(*ptrptr)->next_ptr;
    					*ptrptr=tmp_ptr;   
    					x++;
    				}
    			ptrptr=&((ptrptr)->next_ptr);
    
    
    			}
    
    		}
    	return(found);
    

    mi sono gia accorto di alcuni errori chiamiamoli di distrazione ma secondo me il vero problema sta nella parte finale del programma all'interno dell'ultimo while
  • Re: Esercizio lista collegata con puntatori in c

    Scusa mi sono dimenticato di spiegare come ho intestato il programma: allora la parte del main so che ha degli errori ma sono convinto che ce ne siano altri nella funzione che chiamo.... attraverso il primo if controllo che la lista non sia vuouta, se è vuota il found restituisce false e il programma si chiude se invece in caso contrario il found divebta true e attraverso il primo while faccio si che la lista scorra fino a quando non finisce e atteaverso il secondo while(quello dove secondo me ci sono i veri problemi) attraverso una variabile temporanea faccio si di salvare il primo elemento della lista e di sommarci in esso gli altri x-1 elementi prossimi a quel numero e via via che si ripete il ciclo x decresce (chiaramente x++ è sbagliato in realta sarbbe x--) quello che voglio sapere in fondo è solo se l'ultima parte del programma (sarebbe a dire dall'ultimo while in poi) va bene rigrazio nuovamente in anticipo per le risposte e scusate se è sembrato che volessi barare facendomi aiutare per un esame
Devi accedere o registrarti per scrivere nel forum
5 risposte