Marcus Lee / LinearArray
Committer:
UHSLMarcus
Date:
Wed Mar 08 10:48:34 2017 +0000
Revision:
5:0f65cdadb1a4
Parent:
4:7743528fb9e5
Child:
6:314f180362cb
added option for get by value or refrence

Who changed what in which revision?

UserRevisionLine numberNew contents of line
UHSLMarcus 3:8e9f85814809 1 template<class type>
UHSLMarcus 5:0f65cdadb1a4 2 LinearArray<type>::LinearArray(int size, bool forced) :
UHSLMarcus 5:0f65cdadb1a4 3 _elem_count(0), _array_size(size), _front(0), _rear(-1), _forced(forced) {
UHSLMarcus 5:0f65cdadb1a4 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 5:0f65cdadb1a4 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 5:0f65cdadb1a4 16 if (elem_count < _array_size) {
UHSLMarcus 5:0f65cdadb1a4 17 if (_rear == _array_size - 1) _rear = -1;
UHSLMarcus 5:0f65cdadb1a4 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 5:0f65cdadb1a4 31 item = _array[_front++];
UHSLMarcus 5:0f65cdadb1a4 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 5:0f65cdadb1a4 41 type& LinearArray<type>::pop() {
UHSLMarcus 5:0f65cdadb1a4 42
UHSLMarcus 5:0f65cdadb1a4 43 type item = NULL;
UHSLMarcus 5:0f65cdadb1a4 44
UHSLMarcus 5:0f65cdadb1a4 45 if (elem_count > 0) {
UHSLMarcus 5:0f65cdadb1a4 46 item = _array[_front++];
UHSLMarcus 5:0f65cdadb1a4 47 if (_front == _array_size) _front = 0;
UHSLMarcus 5:0f65cdadb1a4 48 elem_count--;
UHSLMarcus 5:0f65cdadb1a4 49 }
UHSLMarcus 5:0f65cdadb1a4 50
UHSLMarcus 5:0f65cdadb1a4 51 return item;
UHSLMarcus 5:0f65cdadb1a4 52
UHSLMarcus 5:0f65cdadb1a4 53 }
UHSLMarcus 5:0f65cdadb1a4 54
UHSLMarcus 5:0f65cdadb1a4 55 template<class type>
UHSLMarcus 5:0f65cdadb1a4 56 type LinearArray<type>::peek() {
UHSLMarcus 5:0f65cdadb1a4 57
UHSLMarcus 5:0f65cdadb1a4 58 type item = NULL;
UHSLMarcus 5:0f65cdadb1a4 59
UHSLMarcus 5:0f65cdadb1a4 60 if (_front <= _rear) {
UHSLMarcus 5:0f65cdadb1a4 61 item = _array[_front];
UHSLMarcus 5:0f65cdadb1a4 62 }
UHSLMarcus 5:0f65cdadb1a4 63
UHSLMarcus 5:0f65cdadb1a4 64 return item;
UHSLMarcus 5:0f65cdadb1a4 65
UHSLMarcus 5:0f65cdadb1a4 66 }
UHSLMarcus 5:0f65cdadb1a4 67
UHSLMarcus 5:0f65cdadb1a4 68 template<class type>
UHSLMarcus 4:7743528fb9e5 69 type& LinearArray<type>::peek() {
UHSLMarcus 3:8e9f85814809 70
UHSLMarcus 3:8e9f85814809 71 type item = NULL;
UHSLMarcus 3:8e9f85814809 72
UHSLMarcus 5:0f65cdadb1a4 73 if (_front <= _rear) {
UHSLMarcus 5:0f65cdadb1a4 74 item = _array[_front];
UHSLMarcus 3:8e9f85814809 75 }
UHSLMarcus 3:8e9f85814809 76
UHSLMarcus 3:8e9f85814809 77 return item;
UHSLMarcus 3:8e9f85814809 78
UHSLMarcus 1:49758f1e1317 79 }
UHSLMarcus 1:49758f1e1317 80
UHSLMarcus 3:8e9f85814809 81 template<class type>
UHSLMarcus 1:49758f1e1317 82 int LinearArray<type>::size() {
UHSLMarcus 5:0f65cdadb1a4 83 return _array_size;
UHSLMarcus 1:49758f1e1317 84 }
UHSLMarcus 1:49758f1e1317 85
UHSLMarcus 3:8e9f85814809 86 template<class type>
UHSLMarcus 4:7743528fb9e5 87 int LinearArray<type>::count() {
UHSLMarcus 3:8e9f85814809 88 return elem_count;
UHSLMarcus 3:8e9f85814809 89 }
UHSLMarcus 3:8e9f85814809 90
UHSLMarcus 3:8e9f85814809 91 template<class type>
UHSLMarcus 4:7743528fb9e5 92 bool LinearArray<type>::full() {
UHSLMarcus 5:0f65cdadb1a4 93 return elem_count == _array_size;
UHSLMarcus 1:49758f1e1317 94 }