dotfiles/.config/Code/User/History/5797a381/V3zR.cpp
RafayAhmad7548 4f46de8d00 update
2024-09-09 16:59:28 +05:00

127 lines
No EOL
2.3 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(10), 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(){
ResizableArray arr;
arr.add(4);
arr.add(3);
arr.add(2);
arr.add(5);
arr.add(6);
for(int i=0;i<arr.getSize();i++){
arr.get(i);
}
return 0;
}