#include using namespace std; class nodeClass { friend class linkedListClass; public: nodeClass(int newvalue) { dvalue=newvalue; next = NULL; edgePtr = NULL; label = 'Z'; } private: int dvalue; nodeClass *next; union { nodeClass *edgePtr; char label; }; }; class linkedListClass { public: linkedListClass() { first = NULL; } linkedListClass(int nodevalue) { first = new nodeClass(nodevalue); } void testUnion() { cout << "edge: " << first->edgePtr << endl; cout << "label: " << first->label << endl; first->edgePtr = first->next; cout << "edge: " << first->edgePtr << endl; cout << "label: " << first->label << endl; first->label = 'A'; cout << "edge: " << first->edgePtr << endl; cout << "label: " << first->label << endl; } void addbehind(int newvalue) { nodeClass *newnode = new nodeClass(newvalue); if (first == NULL) first = newnode; else { newnode->next = first->next; first->next = newnode; } } void addinfront(int newvalue) { nodeClass *newnode = new nodeClass(newvalue); if (first == NULL) first = newnode; else { newnode->next = first; first = newnode; } } int getdvalue() { if (first == NULL) return -1; else return(first->dvalue); } void printlist() { nodeClass *currentNode; if (first == NULL) cout << "The List is currently empty.\n"; else { currentNode = first; cout << "\nHere is the current list: \n"; while (currentNode != NULL) { cout << "\tcurrent node is " << currentNode->dvalue << endl; currentNode = currentNode->next; } } } private: nodeClass *first; }; int main() { linkedListClass *myList; myList= new linkedListClass(); myList->addbehind(23); cout << "From main: \n\tthe value is " << myList->getdvalue() << endl; myList->addbehind(45); myList->printlist(); myList->addinfront(10); myList->printlist(); myList->testUnion(); return 0; }