Salve ragazzi,sto provando a realizzare un'implementazione di una lista.
Per il momento ho creato soltanto alcuni operatori che sono:
new_list: crea una nuova lista vuota
add_element: Aggiunge un elemento in coda,alla fine della lista
output_list: stampa i valori della lista
empty:_list: verifica se la lista è vuota
Il tipo item è un intero, e nell'header file definisco il nodo e il puntatore al nodo,cioè la lista.
Ora il problema è che quando utilizzo l'operatore output_list non viene stampato il valore inserito nella lista
per prova,ma viene segnalato un errore di segmentazione. Con l'operatore empty_list ho notato che
la lista è vuota,quindi il problema deve essere nella funzione di inserimento, add_element.
list add_element(item val,list l)
{
list temp;
temp = malloc(sizeof(list));
if(temp == NULL)
{
printf("\nImpossibile aggiungere un nuovo elemento!\n");
}
else
{
temp->value = val;
temp->next = l;
l = temp;
}
return l; }
Allego il resto del codice per maggiore chiarezza
//LIST.H
typedef int item;
struct nodoList{
item value;
struct nodoList *next;
};
typedef struct nodoList *list;
//OPERATORI
list new_list();
list add_element(item val,list l);
void output_list(list l);
int empty_list(list l);
//LIST.C
#include <stdlib.h>
#include <stdio.h>
#include "list.h"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
list new_list()
{
return NULL;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
list add_element(item val,list l)
{
list temp;
temp = malloc(sizeof(list));
if(temp == NULL)
{
printf("\nImpossibile aggiungere un nuovo elemento!\n");
}
else
{
temp->value = val;
temp->next = l;
l = temp;
}
return l;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void output_list(list l)
{
list temp;
temp = l;
while(temp->next != NULL)
{
printf("\n%d",temp->value);
temp= temp->next;
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int empty_list(list l)
{
return l == NULL;
}
//MAIN.C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"
int main(){
list my_list;
my_list = new_list();
my_list = (3,my_list);
if(empty_list(my_list))
printf("\nLa lista e' vuota\n");
else
printf("\nLa lista non e' vuota\n");
return 0;
}