首先,创建一个顺序表类
class ArrayList
{
public:
ArrayList(const int size)
{
maxsize = size;
arraylist = new int[maxsize];
curLen = 0;
position = 0;
}
~ArrayList()
{
delete[] arraylist;
}
/////删除值最小的元素//////
void DeleteMin();
//////建造顺序表///////
int * CreatArrayList();
////////打印///////////
void PrintArray();
///////删除值为x的元素/////////
int * DeleteSlect(int x);
///////删除s-t范围内的元素///////
int * DeleteRange(int s, int t);
private:
int maxsize;
int curLen;
int position;
int * arraylist;
};
创建顺序表:
int * ArrayList::CreatArrayList()
{
for (int i = 0; i < maxsize; i++)
{
//*(arraylist + i)=rand()%10;
cin >> *(arraylist + i);
}
curLen = maxsize;
return arraylist;
}
删除最小的元素后用最后一个元素补上被删除位置函数如下:
void ArrayList::DeleteMin()
{
int min = *arraylist;
int idex = 0;
for (int i = 0; i < curLen; i++)
{
if (*(arraylist + i) <= min)
{
min = *(arraylist + i);
idex = i;
}
}
if (idex == curLen - 1)
{
int j = idex;
while (*(arraylist + j) == min)
{
j--;
}
for (int i = 0; i < curLen; i++)
{
if (min == *(arraylist + i))
{
*(arraylist + i) = *(arraylist + j);
}
}
}
else
{
for (int i = 0; i < curLen; i++)
{
if (min == *(arraylist + i))
{
*(arraylist + i) = *(arraylist + curLen - 1);
}
}
}
}
打印顺序表:
void ArrayList::PrintArray()
{
for (int i = 0; i < curLen; i++)
{
cout << *(arraylist + i) << " ";
}
}
删除值为x的元素
int * ArrayList::DeleteSlect(int x)
{
for (int i = 0; i < curLen; i++)
{
if (*(arraylist + i) == x)
{
for (int j = i; j < curLen - 1; j++)
{
*(arraylist + j) = *(arraylist + j + 1);
}
i--;
curLen--;
}
}
return arraylist;
}
删除s-t范围内的元素:
int * ArrayList::DeleteRange(int s, int t)
{
for (int i = 0; i < curLen; i++)
{
if (*(arraylist + i)>s && *(arraylist + i)<t)
{
for (int j = i; j < curLen - 1; j++)
{
*(arraylist + j) = *(arraylist + j + 1);
}
curLen--;
}
}
return arraylist;
}
下面是主函数:
int main()
{
srand((int)time(0));
int maxsize = 0;
int x;
cin >> maxsize;
ArrayList a(maxsize);
a.CreatArrayList();
cout << "未删除最小值的数组为:";
a.PrintArray();
a.DeleteMin();
cout << "\n删除最小值后的数组为:";
a.PrintArray();
cout << endl << "输入要删除的数组元素" << endl;
cin >> x;
a.DeleteSlect(x);
a.PrintArray();
cout << endl << "输入删除范围(如:5 7):";
int s, t;
cin >> s >> t;
a.DeleteRange(s, t);
a.PrintArray();
cout << endl;
}
不定时更新!