I need to do the implementation for the Sorted Set interface. Any other suggestions for good and clean code would be great
* 1. size(): return the number, n, of elements in the set
2. add(x): add the element x to the set if not already present;
Add x to the set provided that there is no element y in the set such
that x equals y. Return true if x was added to the set and false
otherwise.
3. remove(x): remove x from the set;
Find an element y in the set such that x equals y and remove y.
Return y, or null if no such element exists.
4. find(x): locate x in the sorted set;
Find the smallest element y in the set such that y ≥ x. Return y or
null if no such element exists.*/
<pre>
#include <iostream>
class SSet{
private:
int *arr;
int size=0;
public:
void insert(int var);
void remove(int var);
int find(int *arr, int left, int right, int value);
int getSize();
SSet()
{
arr=new int;
}
SSet(const SSet& sset);
~SSet()
{
delete arr;
}
};
SSet::SSet(const SSet &sset)
{
int local_size=sset.size;
for(int i=0; i<local_size; i++)
{
arr[i]=sset.arr[i];
}
}
void SSet::insert(int var) {
if(size==0)
{
arr[0]=var;
return;
}
if (find(arr, 0, size - 1, var) == 1) {
return;
} else {
size++;
int index = 0;
while (var < arr[index] && index < size) {
index++;
}
for (index; index < size; index++) {
arr[index + 1] = arr[index];
}
}
}
void SSet::remove(int var)
{
int index=0;
if(find(arr, 0, size, var))
{
size--;
for (index = 0; index < size; index++)
{
if (arr[index] == var)
{
for (index; index < size; index++)
arr[index] = arr[index + 1];
return;
}
}
}
else{
return;
}
}
int SSet::find(int *arr, int left, int right, int value)
{
if (right >= left)
{
int middle = left+(right-left)/2;
if (arr[middle] == value)
{
return middle;
}
if (value < arr[middle])
{
find(arr, left, middle - 1, value);
}
else
{
find(arr, middle+1, right, value);
}
}
return -1; }
int SSet::getSize()
{
return size;
}
int main()
{
SSet s_set;
int *arr=new int;
s_set.insert(5);
s_set.insert(7);
s_set.insert(3);
int size=s_set.getSize();
for(int i=0; i<3; i++)
{
std::cout<<arr[i]<<" ";
}
int searchFor;
std::cin>>searchFor;
std::cout<<s_set.find(arr, 0, size, searchFor);
delete[] arr;
}
What I have tried:
I searched in Google to find the way, but I thought it would be much faster to learn the right way by asking myself