#include <stdio.h>

#include <stdlib.h>

#include <assert.h>



typedef struct node_st {

  void *element;

  struct node_st *next;

} Node;



Node *Push(Node *head, void *e) {

  Node *n = (Node *) malloc(sizeof(Node));



  assert(n != NULL);  // crashes if false

  n->element = e;

  n->next = head;



  return n;

}



int main(int argc, char **argv) {

  char *hello = "Hi there!";

  char *goodbye = "Bye bye.";

  Node *list = NULL;



  list = Push(list, (void *) hello);

  list = Push(list, (void *) goodbye);

  printf("payload is: '%s'\n", (char *) list->next->element);



  return EXIT_SUCCESS;

}