Marcus Lee / LinearArray
Committer:
UHSLMarcus
Date:
Thu Mar 02 13:10:56 2017 +0000
Revision:
4:7743528fb9e5
Parent:
3:8e9f85814809
Child:
5:0f65cdadb1a4
uses lighterweight circular buffer logic to impliment a queue

Who changed what in which revision?

UserRevisionLine numberNew contents of line
UHSLMarcus 3:8e9f85814809 1 template<class type>
UHSLMarcus 3:8e9f85814809 2 LinearArray<type>::LinearArray(int size) :
UHSLMarcus 4:7743528fb9e5 3 elem_count(0), array_size(size), front(0), rear(-1) {
UHSLMarcus 3:8e9f85814809 4 array = new type[size];
UHSLMarcus 3:8e9f85814809 5 }
UHSLMarcus 1:49758f1e1317 6
UHSLMarcus 3:8e9f85814809 7 template<class type>
UHSLMarcus 3:8e9f85814809 8 LinearArray<type>::~LinearArray() {
UHSLMarcus 3:8e9f85814809 9 delete[] array;
UHSLMarcus 1:49758f1e1317 10 }
UHSLMarcus 1:49758f1e1317 11
UHSLMarcus 3:8e9f85814809 12 template<class type>
UHSLMarcus 3:8e9f85814809 13 int LinearArray<type>::push(type item) {
UHSLMarcus 3:8e9f85814809 14
UHSLMarcus 3:8e9f85814809 15 int ret = -1;
UHSLMarcus 4:7743528fb9e5 16 if (elem_count < array_size) {
UHSLMarcus 4:7743528fb9e5 17 if (rear == array_size - 1) rear = -1;
UHSLMarcus 4:7743528fb9e5 18 array[++rear] = item;
UHSLMarcus 4:7743528fb9e5 19 ret = elem_count++;
UHSLMarcus 3:8e9f85814809 20 }
UHSLMarcus 3:8e9f85814809 21
UHSLMarcus 3:8e9f85814809 22 return ret;
UHSLMarcus 1:49758f1e1317 23 }
UHSLMarcus 1:49758f1e1317 24
UHSLMarcus 3:8e9f85814809 25 template<class type>
UHSLMarcus 4:7743528fb9e5 26 type LinearArray<type>::pop() {
UHSLMarcus 3:8e9f85814809 27
UHSLMarcus 3:8e9f85814809 28 type item = NULL;
UHSLMarcus 3:8e9f85814809 29
UHSLMarcus 4:7743528fb9e5 30 if (elem_count > 0) {
UHSLMarcus 4:7743528fb9e5 31 item = array[front++];
UHSLMarcus 4:7743528fb9e5 32 if (front == array_size) front = 0;
UHSLMarcus 4:7743528fb9e5 33 elem_count--;
UHSLMarcus 3:8e9f85814809 34 }
UHSLMarcus 3:8e9f85814809 35
UHSLMarcus 3:8e9f85814809 36 return item;
UHSLMarcus 3:8e9f85814809 37
UHSLMarcus 1:49758f1e1317 38 }
UHSLMarcus 1:49758f1e1317 39
UHSLMarcus 3:8e9f85814809 40 template<class type>
UHSLMarcus 4:7743528fb9e5 41 type& LinearArray<type>::peek() {
UHSLMarcus 3:8e9f85814809 42
UHSLMarcus 3:8e9f85814809 43 type item = NULL;
UHSLMarcus 3:8e9f85814809 44
UHSLMarcus 4:7743528fb9e5 45 if (front <= rear) {
UHSLMarcus 4:7743528fb9e5 46 item = array[front];
UHSLMarcus 3:8e9f85814809 47 }
UHSLMarcus 3:8e9f85814809 48
UHSLMarcus 3:8e9f85814809 49 return item;
UHSLMarcus 3:8e9f85814809 50
UHSLMarcus 1:49758f1e1317 51 }
UHSLMarcus 1:49758f1e1317 52
UHSLMarcus 3:8e9f85814809 53 template<class type>
UHSLMarcus 1:49758f1e1317 54 int LinearArray<type>::size() {
UHSLMarcus 3:8e9f85814809 55 return array_size;
UHSLMarcus 1:49758f1e1317 56 }
UHSLMarcus 1:49758f1e1317 57
UHSLMarcus 3:8e9f85814809 58 template<class type>
UHSLMarcus 4:7743528fb9e5 59 int LinearArray<type>::count() {
UHSLMarcus 3:8e9f85814809 60 return elem_count;
UHSLMarcus 3:8e9f85814809 61 }
UHSLMarcus 3:8e9f85814809 62
UHSLMarcus 3:8e9f85814809 63 template<class type>
UHSLMarcus 4:7743528fb9e5 64 bool LinearArray<type>::full() {
UHSLMarcus 4:7743528fb9e5 65 return elem_count == array_size;
UHSLMarcus 1:49758f1e1317 66 }