实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能。
时间: 2024-03-29 15:12:05 浏览: 202
seqList_horse34w_线性表_
SL_InsAt函数:
```
bool SL_InsAt(SLType &SL, int n, DATA data)
{
if (SL.length == MAXSIZE) // 判断线性表是否已满
{
printf("线性表已满,无法插入数据!\n");
return false;
}
if (n < 1 || n > SL.length + 1) // 判断插入位置是否合法
{
printf("插入位置非法,无法插入数据!\n");
return false;
}
for (int i = SL.length; i >= n; i--) // 从后往前移动元素,腾出插入位置
SL.data[i] = SL.data[i - 1];
SL.data[n - 1] = data; // 插入新元素
SL.length++; // 线性表长度+1
return true;
}
```
SL_DelAt函数:
```
bool SL_DelAt(SLType &SL, int n)
{
if (n < 1 || n > SL.length) // 判断删除位置是否合法
{
printf("删除位置非法,无法删除数据!\n");
return false;
}
for (int i = n; i < SL.length; i++) // 从删除位置开始往后移动元素,覆盖删除元素
SL.data[i - 1] = SL.data[i];
SL.length--; // 线性表长度-1
return true;
}
```
SL_DelValue函数:
```
int SL_DelValue(SLType &SL, DATA data)
{
int count = 0; // 统计删除的元素个数
for (int i = 0; i < SL.length; i++)
{
if (SL.data[i] == data) // 找到待删除元素
{
for (int j = i; j < SL.length; j++) // 从待删除元素位置开始往后移动元素,覆盖删除元素
SL.data[j] = SL.data[j + 1];
SL.length--; // 线性表长度-1
count++; // 统计删除的元素个数+1
i--; // 继续在当前位置查找待删除元素
}
}
return count;
}
```
阅读全文