#include <assert.h>
#include <stdlib.h>

struct mylist
{
  int data;
  struct mylist *next;
};

int main()
{
  struct mylist *p;

  // Allocations:
  p = malloc(sizeof(struct mylist));
  p->data = 1;
  p->next = malloc(sizeof(struct mylist));
  p->next->data = 2;
  p->next->next = malloc(sizeof(struct mylist));
  p->next->next->data = 3;
  p->next->next->next = malloc(sizeof(struct mylist));
  p->next->next->next->data = 4;

  assert(p->next->next->data == 3);

  return 0;
}
