#include <stdio.h>
#include <stdlib.h>
#include "lista_semplice.h"
/****************************************/
NODO_LISTA_SEMPLICE* newLista()
{
return NULL;
}
/****************************************/
void deleteLista(NODO_LISTA_SEMPLICE* l)
{
if (l != NULL)
{
deleteLista(l->next);
free(l);
}
}
/****************************************/
int* getLista(NODO_LISTA_SEMPLICE *l, int p)
{
if (l == NULL)
return NULL;
if (p == 1)
return &(l->val);
else
return getLista(l->next, p - 1);
}
/****************************************/
int setLista(NODO_LISTA_SEMPLICE *l, int p, int v)
{
if (l == NULL)
return 0;
if (p == 1)
{
l->val = v;
return 1;
}
else
return setLista(l->next, p - 1, v);
}
/****************************************/
NODO_LISTA_SEMPLICE *addLista(NODO_LISTA_SEMPLICE *l, int v)
{
NODO_LISTA_SEMPLICE *t;
t = (NODO_LISTA_SEMPLICE *) malloc(sizeof(NODO_LISTA_SEMPLICE));
if (t == NULL)
return l;
t->val = v;
t->next = l;
return t;
}
/****************************************/
NODO_LISTA_SEMPLICE *addOrderLista(NODO_LISTA_SEMPLICE *l, int v)
{
NODO_LISTA_SEMPLICE *t;
if (l == NULL)
{
t = (NODO_LISTA_SEMPLICE *) malloc(sizeof(NODO_LISTA_SEMPLICE));
if (t == NULL)
return l;
t->val = v;
t->next = NULL;
return t;
}
else
{
if (l->val > v)
return addLista(l, v);
else
{
l->next = addOrderLista(l->next, v);
return l;
}
}
}
/****************************************/
void stampaLista(NODO_LISTA_SEMPLICE *l)
{
if (l != NULL)
{
printf("%d\n", l->val);
stampaLista(l->next);
}
}
/****************************************/
void stampaListaInv(NODO_LISTA_SEMPLICE *l)
{
if (l != NULL)
{
stampaListaInv(l->next);
printf("%d\n", l->val);
}
}

Rispondi quotando