Untitled
unknown
c_cpp
a year ago
1.7 kB
7
Indexable
/*
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;
}
Editor is loading...
Leave a Comment