forked from ArsalanKhairani/Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArrayList.h
More file actions
105 lines (88 loc) · 2.13 KB
/
ArrayList.h
File metadata and controls
105 lines (88 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*******************************************************************************
* Copyright(c) Arsalan Khairani, 2014 *
* Linked List *
* Using Array *
* *
* Generic array implementation of the linked list. Using built-in C++ array. *
*******************************************************************************/
#pragma once
template < typename ARRAYTYPE >
class ArrayList
{
protected:
//datamembers: a pointer to array, int to store size and an int to store how many elements are used
ARRAYTYPE *array;
int arraySize;
int maxElement;
public:
//construtor with default size 10
ArrayList(int size = 10)
{
arraySize = size;
maxElement = 0;
array = new (ARRAYTYPE [size]);
}
//Insert item at position specified in arguments
void InsertItem(int position, ARRAYTYPE item)
{
//check if postion is within array
if (position>arraySize){
cout << "\nInvalid position to insert";
return;
}
//right shift then insert
for (int i = arraySize-2 ; i>position; i--)
{
array[i+1]= array[i];
}
array[position] = item;
maxElement++;
}
//delete item from the position specified
ARRAYTYPE DeleteItem(int position)
{
//again check for out side array indexing
if (position>arraySize){
cout << "\nInvalid position to insert";
return NULL;
}
//store item to be returned
ARRAYTYPE item = array[position];
//left shift
for (int i = position; i<= arraySize-1; i++)
{
array[i] = array[i+1];
}
maxElement--;
return item;
}
//display whole array
void DisplayArray()
{
cout << endl;
for (int i = 0; i<arraySize; i++)
{
cout << array[i] << " ";
}
}
//return true iff array is empty
bool IsEmpty()
{
return maxElement==0;
}
//return true iff arrray is full
bool IsFull()
{
return maxElement==arraySize;
}
//returns list length
int ListLength()
{
return arraySize;
}
//delete pointer to array
~ArrayList(void)
{
delete array;
}
};