假设线性表采用顺序存储结构,试实现函数(int delrepeat()),用以删除所有重复元素,
时间: 2023-10-26 18:03:10 浏览: 123
在顺序存储结构的线性表中,每个元素的位置是连续的,可以通过下标来直接访问。为了实现删除所有重复元素的功能,可以按照以下步骤编写函数(int delrepeat()):
1. 首先创建一个空数组temp[]用于存储不重复的元素。同时创建一个变量count用于记录temp[]数组的元素个数,初始值为0。
2. 使用一个循环遍历原始线性表,从第一个元素开始逐个进行比较。
3. 对于每个元素,使用另一个循环遍历temp[]数组,判断当前元素是否与temp[]中的某个元素相等。如果相等,则跳过当前元素,继续下一个元素的比较。
4. 如果当前元素与temp[]中的所有元素都不相等,则将当前元素存入temp[]中,并将count加1。
5. 循环结束后,temp[]数组中存储的即为不重复的元素。
6. 最后,将temp[]数组中的元素再依次存回原始线性表中的相应位置。
具体的实现代码如下:
```cpp
int delrepeat()
{
int temp[MAX_SIZE];
int count = 0;
for(int i=0; i<size; i++) // 遍历原始线性表
{
bool isDuplicate = false;
for(int j=0; j<count; j++) // 遍历temp[]数组
{
if(data[i] == temp[j]) // 判断当前元素是否与temp[]中的某个元素相等
{
isDuplicate = true;
break;
}
}
if(!isDuplicate) // 如果当前元素与temp[]中的元素都不相等
{
temp[count] = data[i]; // 将当前元素存入temp[]
count +=1; // temp[]数组的元素个数增加
}
}
// 将temp[]数组中的元素存回原始线性表的相应位置
for(int i=0; i<count; i++)
{
data[i] = temp[i];
}
size = count; // 更新线性表的大小
return size; // 返回删除重复元素后的线性表大小
}
```
这样,调用delrepeat()函数后,原始线性表中所有的重复元素都会被删除,线性表的大小也会相应更新。返回值为删除重复元素后的线性表大小。
阅读全文