已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)(笔试题

/******************************************************
*
* name : SeqAdd
* function : (笔试题)已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元
* 素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
* argument
* @x :需要插入顺序表中的元素
* @manager :顺序表的地址
*
* retval : None
* author : Dazz
* date : 2024/4/22
* note : None
*
* *******************************************************/
void SeqAdd(int x, SeqList_t *manager)
{
// 错误处理
if (NULL == manager)
{
printf("请输入有效地址\n");
return;
}
// temp用来记录插入顺序表中的位置
int temp = -1;
// 遍历顺序表,找到插入顺便表中的位置
// Last为顺序表中有效元素的下标
for (int i = 0; i <= Last; i++)
{
if (x < manager[i])
temp = i;
break;
}
// 如果temp中的值仍是-1,则x比顺序表中的任一元素都要大,直接插入到顺序表的尾部
if (-1 == temp)
{
manager[Last] = x;
return;
}
// temp中的值不为-1的情况,即x不比顺序表中的最大的元素要大
// 用循环将顺序表中下标为temp后(包括temp)的元素整体往后挪
for (int i = Last; i >= temp; i--)
{
manager[i + 1] = manager[i];
}
manager[temp] = x;
}