Radu-Adrian Marcu / Mbed OS SOFT253_GroupA_AssignmentRepo

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Committer:
FairyMental
Date:
Fri Apr 07 10:45:32 2017 +0000
Revision:
57:dfcdda1e42b6
Parent:
54:53ee2d07d684
Child:
60:db8c5b7fc548
Commented the main.cpp file.

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 54:53ee2d07d684 4 /*
Netaphous 54:53ee2d07d684 5 Constructor
Netaphous 54:53ee2d07d684 6 Initialises a linked list using the limit given
Netaphous 54:53ee2d07d684 7 */
Netaphous 53:abb161ed4c8c 8 LinkedList::LinkedList(int limit)
Netaphous 53:abb161ed4c8c 9 {
Netaphous 53:abb161ed4c8c 10 sizeLimit = limit;
Netaphous 53:abb161ed4c8c 11 currentSize = 0;
Netaphous 53:abb161ed4c8c 12 head = NULL;
Netaphous 53:abb161ed4c8c 13 }
Netaphous 53:abb161ed4c8c 14
Netaphous 53:abb161ed4c8c 15 void LinkedList::addValueFront(Measure _measure){
Netaphous 53:abb161ed4c8c 16 Node *n = new Node();
Netaphous 53:abb161ed4c8c 17 n->measure = _measure;
Netaphous 53:abb161ed4c8c 18 n->next = head;
Netaphous 53:abb161ed4c8c 19
Netaphous 53:abb161ed4c8c 20 head = n;
Netaphous 53:abb161ed4c8c 21
Netaphous 53:abb161ed4c8c 22 currentSize++;
Netaphous 53:abb161ed4c8c 23 }
Netaphous 54:53ee2d07d684 24 /*
Netaphous 54:53ee2d07d684 25 Adds a value to the end of the list - if the list is full, removes the
Netaphous 54:53ee2d07d684 26 oldest element first to create space
Netaphous 54:53ee2d07d684 27 */
Netaphous 53:abb161ed4c8c 28 void LinkedList::addValueEnd(Measure _measure)
Netaphous 53:abb161ed4c8c 29 {
Netaphous 53:abb161ed4c8c 30 if(head == NULL)
FairyMental 42:b1f29874ab70 31 {
Netaphous 53:abb161ed4c8c 32 Node *aux = new Node();
Netaphous 53:abb161ed4c8c 33 aux->measure = _measure;
Netaphous 53:abb161ed4c8c 34 aux->next = NULL;
Netaphous 53:abb161ed4c8c 35 head = aux;
FairyMental 42:b1f29874ab70 36 }
Netaphous 53:abb161ed4c8c 37 else
Netaphous 53:abb161ed4c8c 38 {
FairyMental 57:dfcdda1e42b6 39 while(currentSize >= sizeLimit)
Netaphous 53:abb161ed4c8c 40 {
Netaphous 53:abb161ed4c8c 41 popValueFRONT();
Netaphous 53:abb161ed4c8c 42 }
FairyMental 42:b1f29874ab70 43
Netaphous 53:abb161ed4c8c 44 Node *n = head;
Netaphous 53:abb161ed4c8c 45 while(n->next != NULL)
FairyMental 40:ba083993b481 46 {
Netaphous 53:abb161ed4c8c 47 n = n->next;
FairyMental 42:b1f29874ab70 48 }
Netaphous 53:abb161ed4c8c 49 Node *aux = new Node();
Netaphous 53:abb161ed4c8c 50 aux->measure = _measure;
Netaphous 53:abb161ed4c8c 51 aux->next = NULL;
Netaphous 53:abb161ed4c8c 52 n->next = aux;
FairyMental 40:ba083993b481 53 }
Netaphous 53:abb161ed4c8c 54 currentSize++;
Netaphous 53:abb161ed4c8c 55 }
Netaphous 53:abb161ed4c8c 56 Measure LinkedList::popValueFRONT()
Netaphous 53:abb161ed4c8c 57 {
Netaphous 53:abb161ed4c8c 58 Node *n = head;
Netaphous 53:abb161ed4c8c 59 Measure _measure = n->measure;
Netaphous 53:abb161ed4c8c 60
Netaphous 53:abb161ed4c8c 61 head = head->next;
Netaphous 53:abb161ed4c8c 62 delete n;
Netaphous 53:abb161ed4c8c 63
Netaphous 53:abb161ed4c8c 64 currentSize--;
Netaphous 53:abb161ed4c8c 65
Netaphous 53:abb161ed4c8c 66 return _measure;
Netaphous 53:abb161ed4c8c 67 }
Netaphous 53:abb161ed4c8c 68 void LinkedList::ListAll()
Netaphous 53:abb161ed4c8c 69 {
Netaphous 53:abb161ed4c8c 70 Node *n = head;
Netaphous 53:abb161ed4c8c 71 int i = 0;
Netaphous 53:abb161ed4c8c 72 while(n->next != NULL)
Netaphous 53:abb161ed4c8c 73 {
Netaphous 53:abb161ed4c8c 74 i++;
Netaphous 53:abb161ed4c8c 75 char *ptr = n->measure.date.ToString();
Netaphous 53:abb161ed4c8c 76 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 77 n = n->next;
Netaphous 53:abb161ed4c8c 78 }
Netaphous 53:abb161ed4c8c 79 }
Netaphous 53:abb161ed4c8c 80 void LinkedList::ListX(int x)
Netaphous 53:abb161ed4c8c 81 {
Netaphous 53:abb161ed4c8c 82 Node *n = head;
Netaphous 53:abb161ed4c8c 83 int i = 0;
Netaphous 53:abb161ed4c8c 84 while(n->next != NULL && i < x)
Netaphous 53:abb161ed4c8c 85 {
Netaphous 53:abb161ed4c8c 86 char *ptr = n->measure.date.ToString();
Netaphous 53:abb161ed4c8c 87 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 88 i++;
Netaphous 53:abb161ed4c8c 89 n = n->next;
Netaphous 53:abb161ed4c8c 90 }
Netaphous 53:abb161ed4c8c 91 }
Netaphous 53:abb161ed4c8c 92 void LinkedList::DeleteAll()
Netaphous 53:abb161ed4c8c 93 {
Netaphous 53:abb161ed4c8c 94 while(head->next != NULL)
Netaphous 53:abb161ed4c8c 95 {
Netaphous 53:abb161ed4c8c 96 Node *n = head;
Netaphous 53:abb161ed4c8c 97 head = head -> next;
Netaphous 53:abb161ed4c8c 98
Netaphous 53:abb161ed4c8c 99 delete n;
Netaphous 53:abb161ed4c8c 100
Netaphous 53:abb161ed4c8c 101 currentSize = 0;
Netaphous 53:abb161ed4c8c 102 }
Netaphous 53:abb161ed4c8c 103 }
Netaphous 53:abb161ed4c8c 104 void LinkedList::DeleteX(int x)
Netaphous 53:abb161ed4c8c 105 {
Netaphous 53:abb161ed4c8c 106 int i = 0;
Netaphous 53:abb161ed4c8c 107 while(head->next != NULL && i < x)
FairyMental 40:ba083993b481 108 {
FairyMental 40:ba083993b481 109 Node *n = head;
FairyMental 40:ba083993b481 110 head = head->next;
Netaphous 53:abb161ed4c8c 111
FairyMental 40:ba083993b481 112 delete n;
FairyMental 42:b1f29874ab70 113
Netaphous 53:abb161ed4c8c 114 i++;
Netaphous 53:abb161ed4c8c 115 }
Netaphous 53:abb161ed4c8c 116 currentSize -= x;
Netaphous 53:abb161ed4c8c 117 }
Netaphous 53:abb161ed4c8c 118 int LinkedList::GetSize()
Netaphous 53:abb161ed4c8c 119 {
Netaphous 53:abb161ed4c8c 120 return currentSize;
Netaphous 53:abb161ed4c8c 121 }