You seem to be thinking of something like this:
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct N
{
int v;
struct N *x;
} N;
N *add(N *r, int v)
{
N *n = malloc(sizeof *n);
if (!n) { perror("add"); exit(1); }
n->v = v;
n->x = r;
return n;
}
void print(const N *r)
{
for ( ; r; r = r->x) printf("%d ", r->v);
printf("\n");
}
int main()
{
N *r = NULL;
r = add(r, 1);
r = add(r, 2);
r = add(r, 3);
r = add(r, 4);
print(r); // values are printed in reverse order since 'add'
// adds new elements to the head of the list
return 0;
}