已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)(笔试题)
/******************************************************
*
* name : SeqAdd
* function : (笔试题)已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元
* 素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
* argument
* @x :需要插入顺序表中的元素
* @manager :顺序表的地址
*
* retval : 返回值为结构体的地址
* author : Dazz
* date : 2024/4/18
* note : None
*
* *******************************************************/
bool SeqAdd(int x, SeqList_t *manager)
{
// 错误处理
if (NULL == manager)
{
printf("请输入有效地址");
return false;
}
// 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 true;
}
// temp中的值不为-1的情况,即x不比顺序表中的最大的元素要大
// 用循环将顺序表中下标为temp后(包括temp)的元素整体往后挪
for (int i = Last; i >= temp; i--)
{
manager[i + 1] = manager[i];
}
manager[temp] = x;
return true;
}
标签:顺序,int,递增,元素,插入,manager,有序
From: https://www.cnblogs.com/Dazz24/p/18151356