Implement a stack using a linked list
class Stack { public: Stack(); ~Stack(); void push( void *data ); void *pop(); protected: // Element struct needed only internally typedef struct Element { struct Element *next; void *data; } Element; Element *head; }; Stack::Stack() { head = NULL; return; } Stack::~Stack() { while( head ){ Element *next = head->next; delete head; head = next; } return; } void Stack::push( void *data ){ //Allocation error will throw exception Element *element = new Element; element->data = data; element->next = head; head = element; return; } void *Stack::pop() { Element *popElement = head; void *data; /* Assume StackError exception class is defined elsewhere */ if( head == NULL ) throw StackError( E_EMPTY ); data = head->data; head = head->next; delete popElement; return data; }
No comments:
Post a Comment