顺序表的插入和删除操作(数据结构)
程序员文章站
2022-03-01 23:19:51
...
顺序表的插入和删除操作(educoder)
void SL_InsAt(SqList* L, int i, ElemType e)
// 在顺序表的第i个位置插入新元素e, 即在元素L->elem[i-1]之前插入
// i的有效范围[1,L->length+1]
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
int j;
if (L->length >= MAXSIZE)
{
printf("顺序表已满!");
}
if (i<1 || i>L->length + 1)
{
printf("插入位置出错");
}
if (i == L->length + 1)
{
L->elem[i-1] = e;
L->length++;
}
else
{
for (j = L->length - 1; j >= i; j--)
{
L->elem[j + 1] = L->elem[j];
}
L->elem[i - 1] = e;
L->length++;
}
/********** End **********/
}
void SL_DelAt(SqList* L, int i)
// 删除顺序表L的第i个元素
//i的有效范围[1,L->length]
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
int j;
if (L->length == 0)
{
}
if (i<1 || i>L->length)
{
}
if (i == L->length)
{
L->length--;
}
else {
for (j = i; j < L->length; j++)
L->elem[j - 1] = L->elem[j];
L->length--;
}
/********** End **********/
}
void SL_DelValue(SqList* L, ElemType x)
// 删除第一个值为x的元素
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
int i = 0;
while (L->elem[i] != x && i < L->length)
{
i++;
}
if (i == L->length)
{
L->length--;
}
else
{
for (int j = i; j < L->length; j++)
{
L->elem[j - 1] = L->elem[j];
}
L->length--;
}
/********** End **********/
}