Untitled
unknown
plain_text
a year ago
1.8 kB
7
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;
}Editor is loading...
Leave a Comment