Untitled

 avatar
unknown
plain_text
a month ago
1.8 kB
3
Indexable
/*

Una successione s2 è una sottosuccessione di s1 se gli elementi di s2 occorrono ordinatamente (non necessariamente in modo consecutivo) in
s1. Ad esempio, la successione di interi < 2; 6; 7 > è una sottosuccessione di < 2; 1; 2; 3; 4; 6; 7; 9 >, ma non di < 7;
2; 1; 6; 3 > (i valori 2, 6, 7 non sono presenti nel giusto ordine).
Definire un tipo di dato opportuno per la gestione di una lista adatta a rappresentare i dati del problema.
 Scrivere un sottoprogramma che ricevute due liste di interi seq e subseq rappresentanti rispettivamente una successione e una sua sotto-
succesione (è senz’altro una sottosuccessione) restituisca una nuova lista corrispondente alla sottosuccessione di seq in cui non compaiono gli
elementi della sottosuccessione subseq. Per esempio, se la situazione iniziale è la seguente:
successione: "2 1 2 3 4 6 7 9"
sottosuccessione: "2 6 7"
il sottoprogramma deve restituire la lista 2 1 3 4 9 o la lista 1 2 3 4 9 (in base all’algoritmo che sviluppate).
Non sono già a disposizione dei sottoprogrammi, che vanno quindi sviluppati.

seq principale: 7 2 1 6 3
subseq 2 6 7


*/

#include <stdio.h>

typedef struct nodo{
    int num;
    struct nodo* next;
}Nodo_t;

Nodo_t* rimuoviSottoseq(Nodo_t* seq, Nodo_t* subseq)
{
    if(seq == NULL || subseq == NULL)
    {
        return NULL;
    }
    
    Nodo_t* risultato = NULL;
    Nodo_t* corrente = seq;
    Nodo_t* pattern = subseq;
    
    while(corrente != NULL)
    {
        if(corrente->num == pattern -> num)
        {
            pattern = pattern -> next;
        }
        else{
            risultato = inserisciCoda(risultato, corrente->num);
        }
        corrente = corrente ->next;
    }
    
    return risultato;
    
}

int main() {
    // Write C code here
    printf("Try programiz.pro");

    return 0;
}
Leave a Comment