Using Distinct, ... continued
public:
 // Creating a new poly
 poly() { i=0; tag=I; }
 poly(int ii) { i=ii; tag=I; }
 poly(node<poly> * pp) { p=pp; tag=P; }
 // Changing the value in a poly
 void set(int ii) { i=ii; tag=I; }
 void set(node<poly> * pp) { p=pp; tag=P; }
 void print_preorder(void);
};
template <class t> struct node {
   t data;
   node<t>* next; };