#include <stdio.h>
#include <stdlib.h>

#define VALUE(p) ((p) -> value)
#define NXT(p) ((p) -> nxt)

typedef struct node {
	int value;
	struct node *nxt;
} NODE;

NODE * new_node (int v, NODE *prox) {
	NODE *l= (NODE*)malloc(sizeof(NODE));

	VALUE(l)= v;
	NXT(l) = prox;

	return l;
}

NODE *add_last(int x, NODE *l) {

	NODE *curr=l;

	if(l==NULL) {
		NODE *aux = new_node(x, l);
		l=aux;
		return l;
	}


	while(NXT(curr)!=NULL) {
		curr=NXT(curr);
	}

	NXT(curr)= new_node (x, NULL);
	return l;
}

int main() {
	NODE *lista=NULL;
	lista = add_last(6, lista);

	printf("%d", lista->value);
}
