magix2003
20-03-2007, 15:49
Salve a tutti,
ho un esercizio da risolvere e sinceramente non ho idea di come fare. L'esercizio dice praticamente data una lista doppiamente collegata, bisogna creare una funzione ListSelect(list, int max) che crei un'altra lista con tutti gli elementi della lista minori o uguali a max. L'esercizio dice espressamente che non bisogna creare una copia del nodo. Per il momento ho provato a fare qualcosa del genere ma con pessimi risultati:
#include <stdio.h>
#include <stdlib.h>
struct node {
int key;
struct node *prev;
struct node *next;
};
struct node *root = NULL;
struct node *ListSelect(struct node *head, int max){
struct node *p = head;
struct node *nuova = NULL;
struct node *aux = (struct node *)malloc(sizeof(struct node));;
struct node *bah = nuova;
while (p != NULL){
if (p->key <= max){
if (bah == NULL){
aux->key = p->key;
ListInsert(bah, aux->key);
}else{
//aux->prev = p;
}
}
p = p->next;
}
print(nuova);
return head;
}
Grazie in anticipo
ho un esercizio da risolvere e sinceramente non ho idea di come fare. L'esercizio dice praticamente data una lista doppiamente collegata, bisogna creare una funzione ListSelect(list, int max) che crei un'altra lista con tutti gli elementi della lista minori o uguali a max. L'esercizio dice espressamente che non bisogna creare una copia del nodo. Per il momento ho provato a fare qualcosa del genere ma con pessimi risultati:
#include <stdio.h>
#include <stdlib.h>
struct node {
int key;
struct node *prev;
struct node *next;
};
struct node *root = NULL;
struct node *ListSelect(struct node *head, int max){
struct node *p = head;
struct node *nuova = NULL;
struct node *aux = (struct node *)malloc(sizeof(struct node));;
struct node *bah = nuova;
while (p != NULL){
if (p->key <= max){
if (bah == NULL){
aux->key = p->key;
ListInsert(bah, aux->key);
}else{
//aux->prev = p;
}
}
p = p->next;
}
print(nuova);
return head;
}
Grazie in anticipo