Untitled
/* Scrivere un sottoprogramma che riceve in ingresso la testa di una lista dinamica per la gestione di numeri interi. Il sottoprogramma costruisce e restituisce una nuova lista di interi, in cui ciascun elemento i-esimo è la media tra l’i- esimo elemento a partire dalla testa e l’i-esimo elemento a partire dalla coda della lista di partenza. Per esempio se la lista in ingresso è: 1 ® 5 ® 4 ® 7 ® 6 ® 3 ® 6 Il sottoprogramma restituirà la lista: 3 ® 4 ® 5 ® 7 Si considerino già disponibili e non da sviluppare la definizione di tipo struttura ed i sottoprogrammi seguenti: typedef struct nodo_{ int n; struct nodo_* next; } nodo_t; nodo_t* inserisciTesta(nodo_t* l, int n); nodo_t* inserisciCoda(nodo_t* l, int n); nodo_t* eliminaTesta(nodo_t* l); nodo_t* eliminaCoda(nodo_t* l); nodo_t* elimina(nodo_t* l, int pos); void visualizza(nodo_t* l); 1 -> 5 -> 4 -> 7 -> 6 -> 3 -> 6 Media : (1+6)/2 (5+3)/2 (4+6)/2 (7+7)/2 3 -> 4 -> 5 -> 7 */ #include <stdio.h> nodo_t *mediaLista(nodo_t *l1) { nodo_t *nuovaLista = NULL; nodo_t *cur = l1; int lunghezza = 0; while(cur != NULL) { lunghezza++; cur = cur -> next; } if(lunghezza == 0) { return NULL; } for(int i=0; i<(lunghezza+1)/2; i++) { cur = l1; for(int j=0; j< i; j++) { cur = cur -> next; } int elementoTesta = cur -> num; cur = l1; for(int j=0; j<lunghezza-1-i; j++) { cur = cur->next; } int elementoCoda = cur -> num; media = (elementoTesta + elementoCoda) / 2; nuovaLista = inserisciCoda(nuovaLista, media); } return nuovaLista; }
Leave a Comment