#include "stack.h" #include #include Stack::~Stack() { stackPtr tmp; while (s != NULL) { tmp = s; s = s->next; delete tmp; tmp = NULL; } } Stack::Stack(const Stack& oldStack) { stackPtr oldPtr = oldStack.s; stackPtr ptr; if (oldStack.s == NULL) { s = NULL; return; } else { s = new stackItem; assert (s != NULL); ptr = s; ptr->next = NULL; ptr->value = oldPtr->value; oldPtr = oldPtr->next; } while (oldPtr != NULL) { ptr->next = new stackItem; assert (ptr->next != NULL); ptr = ptr->next; ptr->next = NULL; ptr->value = oldPtr->value; oldPtr = oldPtr->next; } } int Stack::StackIsEmpty(void) { return s == NULL; } void Stack::Push(int newItem, int& success) { stackPtr tmp; tmp = new stackItem; if (!(success = tmp != NULL)) return; tmp->value = newItem; tmp->next = s; s = tmp; } void Stack::Pop(int& success) { stackPtr tmp; if (s == NULL) success = 0; else { success = 1; tmp = s; s = s->next; delete tmp; } } void Stack::GetStackTop(int& stackTop, int& success) { if (s == NULL) success = 0; else { success = 1; stackTop = s->value; } }