Files
2026-03-05 13:44:23 +01:00

119 lines
3.4 KiB
C++

//#####################################################
// STACK.CPP
//=====================================================
template <class T>
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:
listClass<TWindow>minLista;
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 <class T>
stackClass<T>::stackClass():size(0), head(NULL)
{
}
//#####################################################
// DESTRUCTOR
// FÖRSTÖR STACKEN, ANROPAS AUTOMATISKT VID AVSLUT
// pre: TRUE
// post: stacken har raderats
//=====================================================
template <class T>
stackClass<T>::~stackClass()
{
}
//#####################################################
// RETURNERAR ANTALET ELEMENT I STACKEN
// pre: TRUE
// post: antalet element i stacken är returnerade
//=====================================================
template <class T>
int stackClass<T>::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 <class T>
int stackClass<T>::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 <class T>
void stackClass<T>::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 <class T>
void stackClass<T>::pop()
{
minLista.listDel();
}
//#####################################################
// SKRIVER UT ÖVERSTA ELEMENTET
// pre: att det finns en stack
// post: elementet har skrivits ut
//=====================================================
template <class T>
void stackClass<T>::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 <class T>
void stackClass<T>::display()
{
minLista.listDisplay();
}
//#####################################################
// KOLLAR OM STACKEN ÄR TOM
// pre: TRUE
// post: TRUE om stacken är tom
// post: FALSE om stacken inte är tom
//=====================================================
template <class T>
int stackClass<T>::isEmpty()
{
return(minLista.listIsEmpty());
}