/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ #ifndef RING_H__ #define RING_H__ 1 /*--------------------*/ /* lists implemented as simple ring */ typedef char *Element; /*--------------------*/ typedef struct Node *List; struct Node { Element info; List next; }; /*--------------------*/ extern List mkEmptyList (void); extern List mkOne (Element e); extern int isEmptyList (List l); extern unsigned int length (List l); extern Element head (List l); extern Element at (List l, unsigned int i); extern List tail (List l); extern List cons (Element e, List l); extern List append (List l, Element e); extern List concat (List l1, List l2); extern List insertAt (List l, unsigned int i, Element e); extern List removeAt (List l, unsigned int i); extern List splitAt (List l, unsigned int i, List * rest); /*--------------------*/ #endif