问题描述
- 使用VC++语言用数组实现集合怎么做?
-
提示,定义一个数组,定义Add IndexOf GetLength三个函数。当数组容纳不下的时候,要求能够扩充数组。编写一个主程序调用如上功能,并且实现对数组的遍历。
解决方案
#include <iostream>
using namespace std;
class List
{
private:
int * arr;
int length;
int arrsize;
public:
List()
{
arrsize = 10;
arr = new int[arrsize];
}
void Add(int value)
{
if (length == arrsize)
{
int oldsize = arrsize;
int * oldarr = arr;
arrsize += 10;
arr = new int[arrsize];
memset(arr, 0, arrsize);
memcpy_s(arr, arrsize * sizeof(int), oldarr, oldsize * sizeof(int));
delete[](oldarr);
}
length++;
arr[length - 1] = value;
}
int GetLength()
{
return length;
}
int IndexOf(int index)
{
return arr[index];
}
};
int main(int argc, _TCHAR* argv[])
{
List list = List();
for (int i = 0; i < 35; i++)
{
list.Add(i);
}
for (int i = 0; i < list.GetLength(); i++)
cout << list.IndexOf(i) << endl;
return 0;
}
解决方案二:
容纳不下的时候,开辟一个新空间,比原来的要大,然后把原来数组里内容拷贝到新的空间里,然后释放掉原来的空间就可以了
时间: 2024-08-17 12:32:28