複習完計算機網絡,那現在就要開始全新的篇章,數據結構和算法的複習,我會從前往後把比較重要的算法都儘量過一遍,算法我也會盡量自己實現一遍,其實有的算法在我之前的博客裏已經實現過一遍了,但是我這次還會再實現一次的,畢竟知識常看常新嘛。
以下是我的算法實現,沒有做太多測試,不保證沒有bug,就是給一個大致的實現思路:
class arrList
{
private:
int maxSize;
int *arr;
int cur;
int size;
public:
arrList(int arrSize=100)
{
maxSize = arrSize;
cur = 0;
size = 0;
arr = new int[arrSize];
}
~arrList()
{
delete[] arr;
}
int getLength();
bool append(int value);
bool insert(int location,int value);
bool deleteEle(int location);
bool setValue(int location,int value);
int getValue(int location);
int getLocation(int value);
};
int arrList::getLength()
{
return size;
}
bool arrList::append(int value)
{
if (size < maxSize)
{
arr[cur] = value;
cur++;
size++;
return true;
}
else
{
return false;
}
}
bool arrList::insert(int location, int value)
{
if (size < maxSize)
{
if (location < size)
{
for (int i = cur - 1; i >= location; i--)
{
arr[i + 1] = arr[i];
}
arr[location] = value;
cur++;
size++;
return true;
}
else if (location == size)
{
return append(value);
}
else
{
return false;
}
}
else
{
return false;
}
}
bool arrList::deleteEle(int location)
{
if (size == 0)
{
return false;
}
else
{
if (location < size)
{
if (location == size - 1)
{
size--;
cur--;
return true;
}
else
{
for (int i = location; i <cur-1; i++)
{
arr[i] = arr[i + 1];
}
size--;
cur--;
return true;
}
}
else
{
return false;
}
}
}
bool arrList::setValue(int location,int value)
{
if (size == 0)
{
return false;
}
else
{
if (location < cur)
{
arr[location] = value;
return true;
}
else
{
return false;
}
}
}
int arrList::getValue(int location)
{
if (location < cur)
{
return arr[location];
}
else
{
return 0;
}
}
int arrList::getLocation(int value)
{
if (size == 0)
{
return -1;
}
else
{
for (int i = 0; i < cur; i++)
{
if (arr[i] == value)
{
return i;
}
}
return -1;
}
}