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:42:34 2017 +0000
Branch:
feature/listSizeLimit
Revision:
53:abb161ed4c8c
Parent:
52:b95572c3d4c4
Child:
54:53ee2d07d684
Fixed some compiler errors and tested the circular list

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