//##################################################### // STACK.CPP //===================================================== template class stackClass { public: stackClass(); ~stackClass(); int length(); int duplicate(T newItem); void push(int position, T newItem); void pop(); void top(); void display(); int isEmpty(); private: listClassminLista; typedef struct stackNode* ptrType; ptrType head; int size; }; //##################################################### // CONSTRUCTOR // SÄTTER STACKSTORLEKEN TILL NOLL OCH HEAD TILL NULL // pre: TRUE // post: en stack har skapats //===================================================== template stackClass::stackClass():size(0), head(NULL) { } //##################################################### // DESTRUCTOR // FÖRSTÖR STACKEN, ANROPAS AUTOMATISKT VID AVSLUT // pre: TRUE // post: stacken har raderats //===================================================== template stackClass::~stackClass() { } //##################################################### // RETURNERAR ANTALET ELEMENT I STACKEN // pre: TRUE // post: antalet element i stacken är returnerade //===================================================== template int stackClass::length() { return (minLista.listLength()); } //##################################################### // KOLLAR OM ETT ELEMENT FINNS // pre: att det finns en stack // post: TRUE om elementet redan finns // post: FALSE om elementet inte redan finns //===================================================== template int stackClass::duplicate(T newItem) { return(minLista.newDuplicate(newItem)); } //##################################################### // LÄGGER TILL ETT NYTT ELEMENT I STACKEN // pre: minne fanns för att skapa fönstret // pre: att maximalt antal element inte finns // pre: att elementet inte redan finns // post: stacken har ett nytt element //===================================================== template void stackClass::push(int position, T newItem) { minLista.listInsert(position, newItem); } //##################################################### // TAR BORT ELEMENT I STACKEN // pre: att det finns en stack // post: elementet har tagits bort //===================================================== template void stackClass::pop() { minLista.listDel(); } //##################################################### // SKRIVER UT ÖVERSTA ELEMENTET // pre: att det finns en stack // post: elementet har skrivits ut //===================================================== template void stackClass::top() { TWindow ruta; ruta=minLista.retrive(FORST); cout << ruta; ruta.move(moveX,moveY); } //##################################################### // SKRIVER UT STACKEN PÅ SKÄRMEN // pre: att det finns en stack // post: stacken har skrivits ut //===================================================== template void stackClass::display() { minLista.listDisplay(); } //##################################################### // KOLLAR OM STACKEN ÄR TOM // pre: TRUE // post: TRUE om stacken är tom // post: FALSE om stacken inte är tom //===================================================== template int stackClass::isEmpty() { return(minLista.listIsEmpty()); }