119 lines
3.4 KiB
C++
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());
|
|
}
|