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