111 lines
3.1 KiB
C++
111 lines
3.1 KiB
C++
//#####################################################
|
|
// QUEUE.CPP
|
|
//=====================================================
|
|
|
|
const int Qleft[2] = {50,70};
|
|
const int Qtop = 1;
|
|
const int QmoveX = 0;
|
|
const int QmoveY = 4;
|
|
|
|
template <class T>
|
|
class queueClass
|
|
{
|
|
public:
|
|
queueClass();
|
|
~queueClass();
|
|
T retrive(int position);
|
|
int isEmpty();
|
|
int length();
|
|
int duplicate(T newItem);
|
|
void ins(T newItem);
|
|
void del(int position);
|
|
private:
|
|
listClass<TWindow>minLista;
|
|
typedef struct queueNode* ptrType;
|
|
ptrType head;
|
|
int size;
|
|
};
|
|
//#####################################################
|
|
// CONSTRUCTOR
|
|
// SÄTTER KÖSTORLEKEN TILL NOLL & HEAD TILL NULL
|
|
// pre: TRUE
|
|
// post: en kö har skapats
|
|
//=====================================================
|
|
template <class T>
|
|
queueClass<T>::queueClass():size(0), head(NULL)
|
|
{
|
|
}
|
|
//#####################################################
|
|
// DESTRUCTOR
|
|
// FÖRSTÖR KÖN, ANROPAS AUTOMATISKT VID AVSLUT
|
|
// pre: att det finns en kö
|
|
// post: kön har raderats
|
|
//=====================================================
|
|
template <class T>
|
|
queueClass<T>::~queueClass()
|
|
{
|
|
}
|
|
//#####################################################
|
|
// RETURNERAR ANTALET ELEMENT I KÖN
|
|
// pre: TRUE
|
|
// post: antalet element i kön är returnerade
|
|
//=====================================================
|
|
template <class T>
|
|
int queueClass<T>::length()
|
|
{
|
|
return (minLista.listLength());
|
|
}
|
|
//#####################################################
|
|
// KOLLAR OM ETT ELEMENT FINNS
|
|
// pre: att det finns en kö
|
|
// post: TRUE om elementet redan finns
|
|
// post: FALSE om elementet inte redan finns
|
|
//=====================================================
|
|
template <class T>
|
|
int queueClass<T>::duplicate(T newItem)
|
|
{
|
|
return (minLista.newDuplicate(newItem));
|
|
}
|
|
//#####################################################
|
|
// LÄGGER TILL ETT NYTT ELEMENT I KÖN
|
|
// pre: att maximalt antal element inte finns
|
|
// pre: att elementet inte finns
|
|
// post:ett nytt element
|
|
//=====================================================
|
|
template <class T>
|
|
void queueClass<T>::ins(T newItem)
|
|
{
|
|
size++;
|
|
minLista.listInsert(size, newItem);
|
|
}
|
|
//#####################################################
|
|
// TAR BORT ELEMENT I LISTAN
|
|
// pre: att det finns en kö
|
|
// post: översta elementet har tagits bort
|
|
//=====================================================
|
|
template <class T>
|
|
void queueClass<T>::del(int position)
|
|
{
|
|
size--;
|
|
minLista.listDel(position);
|
|
}
|
|
//#####################################################
|
|
// KOLLAR OM KÖN ÄR TOM
|
|
// pre: TRUE
|
|
// post: TRUE om kön är tom
|
|
// post: FALSE om kön inte är tom
|
|
//=====================================================
|
|
template <class T>
|
|
int queueClass<T>::isEmpty()
|
|
{
|
|
return (minLista.listIsEmpty());
|
|
}
|
|
//#####################################################
|
|
// HÄMTAR ELEMENTET
|
|
// pre: att det finns en lista
|
|
// post: det översta elementet har returnerats
|
|
//=====================================================
|
|
template <class T>
|
|
T queueClass<T>::retrive(int position)
|
|
{
|
|
return(minLista.retrive(position));
|
|
}
|