Untitled
/* Definito il tipo di dato per rappresentare una lista dinamica di interi, scrivere un sottoprogramma che riceve in ingresso una lista l. Il sottoprogramma modifica e restituisce la lista l aggiungendo un nuovo nodo contenente il valore 0 tra ciascuna coppia di elementi consecutivi, dove il primo è il doppio del secondo. Esempio: Se il sottoprogramma riceve in ingresso L1 = 4 -> 2 -> 1 -> 5 -> 0 -> 0 -> 1 ->| allora restituisce la lista modificata L1 = 4 -> 0 -> 2 -> 0 -> 1 -> 5 -> 0 -> 0 -> 0 -> 1 ->| Non sono disponibili sottoprogrammi di manipolazione delle liste. Utilizzate e sviluppate quelli che ritenete utili. */ #include <stdio.h> void inserisciDopo(nodo_t *n) { nodo_t *nuovo = (nodo_t *)malloc(sizeof(nodo_t)); nuovo->num = 0; nuovo->next = n->next; n->next = nuovo; } nodo_t *modificaLista(nodo_t *l) { if(l==NULL || l->next == NULL) { return l; } nodo_t *curr = l; while(curr != NULL && curr->next != NULL) { if(curr->num == 2 * curr->next->num || (curr->num == 0) && curr->next->num == 0) { inserisciDopo(cur); curr = curr -> next; } curr = curr -> next; } return l; } int main() { // Write C code here printf("Try programiz.pro"); return 0; }
Leave a Comment