Radu-Adrian Marcu / Mbed OS SOFT253_GroupA_AssignmentRepo

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Committer:
Netaphous
Date:
Thu Apr 06 19:31:43 2017 +0000
Branch:
feature/listSizeLimit
Revision:
52:b95572c3d4c4
Parent:
47:468a89d62c23
Child:
53:abb161ed4c8c
Implemented a limit to the size of the list, needs testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FairyMental 40:ba083993b481 1 #include "LinkedList.h"
FairyMental 40:ba083993b481 2 #include <stdio.h>
FairyMental 40:ba083993b481 3 #include <ctype.h>
FairyMental 40:ba083993b481 4 // constructor
Netaphous 52:b95572c3d4c4 5 LinkedList::LinkedList(int limit)
FairyMental 42:b1f29874ab70 6 {
FairyMental 42:b1f29874ab70 7 size = 0;
FairyMental 40:ba083993b481 8 head = NULL;
FairyMental 42:b1f29874ab70 9 }
FairyMental 40:ba083993b481 10
FairyMental 40:ba083993b481 11 void LinkedList::addValueFront(Measure _measure){
FairyMental 40:ba083993b481 12 Node *n = new Node();
FairyMental 40:ba083993b481 13 n->measure = _measure;
FairyMental 40:ba083993b481 14 n->next = head;
FairyMental 40:ba083993b481 15
FairyMental 42:b1f29874ab70 16 head = n;
FairyMental 42:b1f29874ab70 17
Netaphous 52:b95572c3d4c4 18 currentSize++;
FairyMental 40:ba083993b481 19 }
FairyMental 42:b1f29874ab70 20 void LinkedList::addValueEnd(Measure _measure)
FairyMental 42:b1f29874ab70 21 {
FairyMental 42:b1f29874ab70 22 if(head == NULL)
FairyMental 40:ba083993b481 23 {
FairyMental 42:b1f29874ab70 24 Node *aux = new Node();
FairyMental 42:b1f29874ab70 25 aux->measure = _measure;
FairyMental 42:b1f29874ab70 26 aux->next = NULL;
FairyMental 42:b1f29874ab70 27 head = aux;
FairyMental 42:b1f29874ab70 28 }
FairyMental 42:b1f29874ab70 29 else
FairyMental 42:b1f29874ab70 30 {
Netaphous 52:b95572c3d4c4 31 if(currentSize >= sizeLimit)
Netaphous 52:b95572c3d4c4 32 {
Netaphous 52:b95572c3d4c4 33 popValueFRONT();
Netaphous 52:b95572c3d4c4 34 }
Netaphous 52:b95572c3d4c4 35
FairyMental 42:b1f29874ab70 36 Node *n = head;
FairyMental 42:b1f29874ab70 37 while(n->next != NULL)
FairyMental 40:ba083993b481 38 {
FairyMental 42:b1f29874ab70 39 n = n->next;
FairyMental 42:b1f29874ab70 40 }
FairyMental 42:b1f29874ab70 41 Node *aux = new Node();
FairyMental 42:b1f29874ab70 42 aux->measure = _measure;
FairyMental 42:b1f29874ab70 43 aux->next = NULL;
FairyMental 42:b1f29874ab70 44 n->next = aux;
FairyMental 40:ba083993b481 45 }
Netaphous 52:b95572c3d4c4 46 currentSize++;
FairyMental 40:ba083993b481 47 }
FairyMental 40:ba083993b481 48 Measure LinkedList::popValueFRONT()
FairyMental 40:ba083993b481 49 {
FairyMental 40:ba083993b481 50 Node *n = head;
FairyMental 40:ba083993b481 51 Measure _measure = n->measure;
FairyMental 40:ba083993b481 52
FairyMental 40:ba083993b481 53 head = head->next;
FairyMental 40:ba083993b481 54 delete n;
FairyMental 42:b1f29874ab70 55
Netaphous 52:b95572c3d4c4 56 currentSize--;
FairyMental 42:b1f29874ab70 57
FairyMental 40:ba083993b481 58 return _measure;
FairyMental 42:b1f29874ab70 59 }
FairyMental 42:b1f29874ab70 60 void LinkedList::ListAll()
FairyMental 42:b1f29874ab70 61 {
FairyMental 42:b1f29874ab70 62 Node *n = head;
FairyMental 43:3983059e0d91 63 int i = 0;
FairyMental 42:b1f29874ab70 64 while(n->next != NULL)
FairyMental 42:b1f29874ab70 65 {
FairyMental 43:3983059e0d91 66 i++;
FairyMental 47:468a89d62c23 67 char *ptr = n->measure.date.ToString();
FairyMental 47:468a89d62c23 68 printf("%i. %s : T: %f | H: %f | P: %f |\r\n",i,ptr ,n->measure.temperature, n->measure.humidity, n->measure.pressure);
FairyMental 42:b1f29874ab70 69 n = n->next;
FairyMental 42:b1f29874ab70 70 }
FairyMental 43:3983059e0d91 71 }
FairyMental 43:3983059e0d91 72 void LinkedList::ListX(int x)
FairyMental 43:3983059e0d91 73 {
FairyMental 43:3983059e0d91 74 Node *n = head;
FairyMental 43:3983059e0d91 75 int i = 0;
FairyMental 43:3983059e0d91 76 while(n->next != NULL && i < x)
FairyMental 43:3983059e0d91 77 {
FairyMental 47:468a89d62c23 78 char *ptr = n->measure.date.ToString();
FairyMental 47:468a89d62c23 79 printf("%i. %s T: %f | H: %f | P: %f |\r\n",i,ptr , n->measure.temperature, n->measure.humidity, n->measure.pressure);
FairyMental 43:3983059e0d91 80 i++;
FairyMental 43:3983059e0d91 81 n = n->next;
FairyMental 43:3983059e0d91 82 }
FairyMental 43:3983059e0d91 83 }
FairyMental 43:3983059e0d91 84 void LinkedList::DeleteAll()
FairyMental 43:3983059e0d91 85 {
FairyMental 43:3983059e0d91 86 while(head->next != NULL)
FairyMental 43:3983059e0d91 87 {
FairyMental 43:3983059e0d91 88 Node *n = head;
FairyMental 43:3983059e0d91 89 head = head -> next;
FairyMental 43:3983059e0d91 90
FairyMental 43:3983059e0d91 91 delete n;
FairyMental 43:3983059e0d91 92
Netaphous 52:b95572c3d4c4 93 currentSize = 0;
FairyMental 43:3983059e0d91 94 }
FairyMental 43:3983059e0d91 95 }
FairyMental 43:3983059e0d91 96 void LinkedList::DeleteX(int x)
FairyMental 43:3983059e0d91 97 {
FairyMental 43:3983059e0d91 98 int i = 0;
FairyMental 43:3983059e0d91 99 while(head->next != NULL && i < x)
FairyMental 43:3983059e0d91 100 {
FairyMental 43:3983059e0d91 101 Node *n = head;
FairyMental 43:3983059e0d91 102 head = head->next;
FairyMental 44:b523c9a9dd97 103
FairyMental 43:3983059e0d91 104 delete n;
FairyMental 44:b523c9a9dd97 105
FairyMental 44:b523c9a9dd97 106 i++;
FairyMental 43:3983059e0d91 107 }
Netaphous 52:b95572c3d4c4 108 currentSize -= x;
FairyMental 45:9a33f2bc2b4e 109 }
FairyMental 45:9a33f2bc2b4e 110 int LinkedList::GetSize()
FairyMental 45:9a33f2bc2b4e 111 {
FairyMental 45:9a33f2bc2b4e 112 return size;
FairyMental 40:ba083993b481 113 }