推免複習之數據結構和算法 順序表篇

複習完計算機網絡,那現在就要開始全新的篇章,數據結構和算法的複習,我會從前往後把比較重要的算法都儘量過一遍,算法我也會盡量自己實現一遍,其實有的算法在我之前的博客裏已經實現過一遍了,但是我這次還會再實現一次的,畢竟知識常看常新嘛。

以下是我的算法實現,沒有做太多測試,不保證沒有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;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章