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