#ifndef LIST_H
#define LIST_H

typedef struct Node
{
   int          data;
   struct Node *next;
}* NodePtr;

NodePtr newNode ( int data, NodePtr nxt );

NodePtr empty ( NodePtr );

NodePtr insertBefore ( NodePtr cell, NodePtr node );

NodePtr insertAfter ( NodePtr cell, NodePtr node );

NodePtr mergeList ( NodePtr left, NodePtr right );

void traverse ( NodePtr current );

NodePtr mergeRecurse ( NodePtr );

NodePtr mergeRecur ( NodePtr, int );

NodePtr mergeIter ( NodePtr head );

NodePtr mergeNatural ( NodePtr head );

NodePtr quickSort ( NodePtr head );

#endif
