116 lines
No EOL
2.1 KiB
C++
116 lines
No EOL
2.1 KiB
C++
/*
|
|
Rafay Ahmad
|
|
23I-2526
|
|
*/
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
|
|
class ResizableArray{
|
|
int* arr;
|
|
int size;
|
|
int i;
|
|
|
|
void increaseCapacity(){
|
|
int* newArr = new int[size*2];
|
|
for(int j=0;j<size;j++){
|
|
newArr[j] = arr[j];
|
|
}
|
|
delete arr;
|
|
arr = newArr;
|
|
size *= 2;
|
|
}
|
|
|
|
void decreaseCapacity(){
|
|
int* newArr = new int[size/2];
|
|
for(int j=0;j<size;j++){
|
|
newArr[j] = arr[j];
|
|
}
|
|
delete arr;
|
|
arr = newArr;
|
|
size /= 2;
|
|
}
|
|
|
|
public:
|
|
ResizableArray() : size(1), i(0), arr(new int[size]){}
|
|
|
|
void add(int value){
|
|
if(i >= size) increaseCapacity();
|
|
arr[i] = value;
|
|
i++;
|
|
}
|
|
|
|
bool insert(int index, int value){
|
|
if(index < 0 || index > size) return false;
|
|
else{
|
|
if(i >= size) increaseCapacity();
|
|
for(int j=i;j>=index;j--){
|
|
arr[j+1] = arr[j];
|
|
}
|
|
arr[index] = value;
|
|
i++;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool remove(int index){
|
|
if(index < 0 || index > size) return false;
|
|
else{
|
|
for(int j=index;j<i-1;j++){
|
|
arr[j] = arr[j+1];
|
|
}
|
|
i--;
|
|
if(i < size/4) decreaseCapacity();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool updateElement(int index, int value){
|
|
if(index < 0 || index > size) return false;
|
|
arr[index] = value;
|
|
return true;
|
|
}
|
|
|
|
int get(int index) const{
|
|
if(index < 0 || index > size) return -1;
|
|
return arr[index];
|
|
}
|
|
|
|
int getSize() const{
|
|
return i;
|
|
}
|
|
|
|
int capacity() const{
|
|
return size;
|
|
}
|
|
|
|
void clear(){
|
|
delete arr;
|
|
arr = new int[1];
|
|
i = 0;
|
|
}
|
|
|
|
void reverse(){
|
|
int* newArr = new int[size];
|
|
for(int j=0;j<i;j++){
|
|
newArr[j] = arr[i-j-1];
|
|
}
|
|
delete arr;
|
|
newArr = arr;
|
|
}
|
|
|
|
int find(int value) const{
|
|
for(int j=0;j<i;j++){
|
|
if(arr[j] = value) return j;
|
|
}
|
|
return -1;
|
|
}
|
|
};
|
|
|
|
|
|
int main(){
|
|
|
|
|
|
|
|
return 0;
|
|
} |