#include "enhanced-stack.hpp" ENHANCED_STACK::ENHANCED_STACK() : STACK() { } void ENHANCED_STACK::Print_Stack() { NODE * temp = HEAD; cout << "Stack: "; if(Is_Empty()) { cout << ""; } else { while (temp != NULL) { cout << setw(3) << temp->value; temp = temp->link; } } cout << endl; } void ENHANCED_STACK::Clean() { int value; while(!Is_Empty()) { Pop(value); } } void ENHANCED_STACK::Copy(STACK & S1) { ENHANCED_STACK temp; int value; Clean(); while(!S1.Is_Empty()) { S1.Pop(value); temp.Push(value); } while(!temp.Is_Empty()) { temp.Pop(value); Push(value); S1.Push(value); } } int ENHANCED_STACK::Equal(STACK & S1) { ENHANCED_STACK temp1; ENHANCED_STACK temp2; int flag = 1; int value1; int value2; temp1.Copy(*this); temp2.Copy(S1); while(!(temp1.Is_Empty() && temp2.Is_Empty())) { temp1.Pop(value1); temp2.Pop(value2); if(value1 != value2) { flag = 0; break; } } if(temp1.Is_Empty() && temp2.Is_Empty()) { flag = 0; } return flag; }