class skewheap { int element; bool root; //am I root? skewheap * left; skewheap * right; public: void print (int space); //I am giving you these two. void print(); skewheap(int el); //Const. heap of 1 element skewheap(); //Constructs empty heap skewheap(int el, skewheap * l, skewheap * r); //Constructs heap of el, with left child pointing to l // and right child pointing to r. virtual ~skewheap(); //Destructor. Make sure it works. friend skewheap * merge(skewheap * h1, skewheap * h2); // Merges h1 and h2 and returns the merge of the two. // You can modify h1, but NOT h2. You can, however, // make a copy of h2 and merge this copy into h1. friend skewheap * mergethem(skewheap *h1, skewheap * h2); // Helper function. You do not have to implement it. // but you might want to. skewheap(skewheap & s); //copy constructor. You will need it. int deleteMin(); // Returns the element of the root, then changes "this" // to be the result of merging left and right. NOTE: // you CANNOT assign something to "this" (e.g. this = x). // You must do each data member separetely. void insert(int x); // Inserts a value x into the heap. Use merge. };