armies
Utente Attivo
- Messaggi
- 167
- Reazioni
- 8
- Punteggio
- 49
Ciao a tutti,
sto cercando di risolvere un piccolo problema preso da un esame di ingegneria informatica in C. Il testo e' il seguente:
Sia data una lista i cui elementi appartengono alla seguente struttura ListNode:
struct ListNode {
Data info;
ListNode *next;
};
dove ogni elemento contiene un valore intero:
typedef int Data;
Implementare la seguente funzione C:
ListNode *subset(ListNode *list);
che data in input una lista concatenata list, restituisca il puntatore ad una nuova lista concatenata che contiene i soli elementi di list i cui valori sono maggiori dell'elemento ad essi successivo. L'ultimo valore di list deve essere sempre incluso. L'ordine degli elementi della lista ritornata dovra' essere quello della lista di input.
Questo e' quello che sono riuscito a fare
Riesco a creare correttamente la nuova lista, quello che non riesco a fare e' inserire l'ultimo elemento che deve essere sempre presente.
Grazie anticipatamente
sto cercando di risolvere un piccolo problema preso da un esame di ingegneria informatica in C. Il testo e' il seguente:
Sia data una lista i cui elementi appartengono alla seguente struttura ListNode:
struct ListNode {
Data info;
ListNode *next;
};
dove ogni elemento contiene un valore intero:
typedef int Data;
Implementare la seguente funzione C:
ListNode *subset(ListNode *list);
che data in input una lista concatenata list, restituisca il puntatore ad una nuova lista concatenata che contiene i soli elementi di list i cui valori sono maggiori dell'elemento ad essi successivo. L'ultimo valore di list deve essere sempre incluso. L'ordine degli elementi della lista ritornata dovra' essere quello della lista di input.
Questo e' quello che sono riuscito a fare
Codice:
ListNode *newNode(Data d) {
ListNode *n = (ListNode *)malloc(sizeof(ListNode));
n->next = NULL;
n->info = d;
return n;
}
ListNode* subset(ListNode *list) {
ListNode* first = NULL;
ListNode* last = NULL;
int nextValue = -1;
if (list != NULL) {
first = newNode(list->info);
last = first;
list = list->next;
nextValue = last->info;
}
while(list!=NULL) {
if( (list->info > nextValue) ) {
first->next = newNode(list->info);
first = first->next;
nextValue = list->info;
}
list=list->next;
}
return first;
}
Riesco a creare correttamente la nuova lista, quello che non riesco a fare e' inserire l'ultimo elemento che deve essere sempre presente.
Grazie anticipatamente
Ultima modifica: