i have to make a lisp
which i have made something like this:

enum nodetype { a, l};

class Node
{
nodetype ntype;
union
{
char atom;
struct
{
Node * head;
Node * tail;
} list;
};
Node (char );
Node ( Node *, Node *);
// all the functions..
};

the problem is that all the function of this lisp has to be recursive
and i m stuck in 2...

one is input
void input();

and other is reverse of the input
Node * reverse();

user should input like this
((ab)cd(ef)) or ((ab)(cd)(ef)) or (((ab)(cd))(ef)(gh))
or simple ((a)bc) i think u get the point
now one has to make nodes and link them..

and the reverse function should make the first input as
((ef)dc((ab)) and second as((ef)(cd)(ab))
and so on

Can anybody help me..??
Thanks