Untitled

 avatar
unknown
c_cpp
21 days ago
1.3 kB
3
Indexable
/*
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