Files
2026-03-05 13:39:39 +01:00

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) ; }