Untitled
/* 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