Untitled
/* 1) Definire il tipo di dato per rappresentare una lista dinamica di interi. 2) Scrivere un sottoprogramma che riceve in ingresso una lista dinamica di interi detta l. Il sottoprogramma crea e restituisce una nuova lista l1 come segue: ogni elemento di l è inserito in coda a l1 se e solo se è maggiore di tutti i suoi successivi in l. L’ultimo numero viene sempre aggiunto visto che non ha successivi. Si assuma di avere a disposizione un sottoprogramma che appende un nuovo valore intero in coda ad una lista, avente il seguente prototipo: nodo_t* inserisciInCoda(nodo_t* l, int n); Esempio: se l: 1 -> 12 -> 6 -> 2 -> 3 il sottoprogramma crea una nuova lista l1: 12 -> 6 -> 3 Variante: 2) Scrivere un sottoprogramma che riceve in ingresso una lista dinamica di interi detta l. Il sottoprogramma crea e restituisce una nuova lista l1 come segue: ogni elemento di l è inserito in coda a l1 se e solo se è minore o uguale di tutti i suoi successivi in l. L’ultimo numero viene sempre aggiunto visto che non ha successivi. Si assuma di avere a disposizione un sottoprogramma che appende un nuovo valore intero in coda ad una lista avente il seguente prototipo: nodo_t* inserisciInCoda(nodo_t* l, int n); Esempio: se l: 1 -> 12 -> 6 -> 2 -> 3 il sottoprogramma crea una nuova lista l1: 1 -> 2 -> 3 */ #include <stdio.h> typedef struct nodo{ int num; struct nodo* next; }nodo_t; nodo_t* inserisciInCoda(nodo_t* l, int n); nodo_t* creaListaMaggiori(nodo_t* l) { nodo_t *l1=NULL; nodo_t *curr = l; while(curr != NULL) { nodo_t *succ = curr->next; int maggioreDiTutti = 1; while(succ != NULL && maggioreDiTutti) { if(curr->num <= succ->num) { maggioreDiTutti=0; } succ = succ ->next; } if(maggioreDiTutti || curr->next == NULL) { l1 = inserisciInCoda(l1, curr->num); } curr = curr->next; } return l1; } int main() { // Write C code here printf("Try programiz.pro"); return 0; }
Leave a Comment