145 lines
5.4 KiB
C++
145 lines
5.4 KiB
C++
/* *********************************************************************** */
|
|
/* lab1.cpp 980910 */
|
|
/* Innehåller köhantering */
|
|
/* *********************************************************************** */
|
|
/* Daniel Westerberg */
|
|
/* Christian Ohlsson */
|
|
/* Anna-Maria Haglund */
|
|
/* Ingela Johansson */
|
|
/* Charlotta Lagerkvist */
|
|
/* *********************************************************************** */
|
|
#include "lab1.hpp"
|
|
|
|
/* *********************************************************************** */
|
|
/* constructorn */
|
|
/* Nollställer variabler */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: inget */
|
|
/* *********************************************************************** */
|
|
queue::queue()
|
|
{
|
|
first = NULL;
|
|
last = NULL;
|
|
cur = NULL;
|
|
r = 0;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* destructorn */
|
|
/* Tömmer listan */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: inget */
|
|
/* *********************************************************************** */
|
|
queue::~queue()
|
|
{
|
|
cur = first;
|
|
while (cur)
|
|
{
|
|
first = cur;
|
|
cur = cur->next;
|
|
delete first;
|
|
}
|
|
first = NULL;
|
|
last = NULL;
|
|
cur = NULL;
|
|
r = 0;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* enqueue() */
|
|
/* ställer en person med ett antal varor i kön */
|
|
/* INPUT: antal varor */
|
|
/* OUTPUT: bool */
|
|
/* *********************************************************************** */
|
|
bool queue::enqueue(int v)
|
|
{
|
|
if (cur = new kund)
|
|
{
|
|
cur->next=NULL;
|
|
cur->varor = v;
|
|
if (first == NULL)
|
|
first = cur;
|
|
else
|
|
last->next = cur;
|
|
last = cur;
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* dequeue() */
|
|
/* tar bort en person ur kön */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: bool */
|
|
/* *********************************************************************** */
|
|
bool queue::dequeue()
|
|
{
|
|
if (cur = first)
|
|
{
|
|
if ((first = first->next) == NULL)
|
|
last=NULL;
|
|
delete cur;
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* warez() */
|
|
/* kollar hur lång varje kö är, tidsmässigt! */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: tiden för varje kund baserad på antal varor */
|
|
/* *********************************************************************** */
|
|
int queue::warez()
|
|
{
|
|
int x=0;
|
|
cur = first;
|
|
while (cur)
|
|
{
|
|
x += cur->varor*R + B; // räknar ut tiden för varje kund + 'x'
|
|
cur = cur->next;
|
|
}
|
|
return x;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* pay() */
|
|
/* betalningsfunktion, returnerar antalet varor kvar att betala */
|
|
/* INPUT: antal varor att läggas till */
|
|
/* OUTPUT: antal varor för första kunden i kön */
|
|
/* *********************************************************************** */
|
|
int queue::pay(int v)
|
|
{
|
|
if (first)
|
|
return (first->varor += v); // lägger till 'v' och returnerar
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* queueSize() */
|
|
/* returnerar antalet kunder i kön */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: Antal kunder i kön */
|
|
/* *********************************************************************** */
|
|
int queue::queueSize()
|
|
{
|
|
int x=0;
|
|
cur = first;
|
|
while (cur)
|
|
{
|
|
cur = cur->next;
|
|
x++;
|
|
}
|
|
return x;
|
|
}
|
|
|
|
/* *********************************************************************** */
|
|
/* isEmpty() */
|
|
/* kollar om en kö är tom */
|
|
/* INPUT: inget */
|
|
/* OUTPUT: TRUE om listan är tom */
|
|
/* *********************************************************************** */
|
|
bool queue::isEmpty() { return (first == NULL) ; }
|