顺序表

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

/**************************************************
*
*函数名称: SeqList_Insert
*函数功能: 插入一个元素后保持该顺序表仍然递增有序排列
*函数参数:
     @SeqList *L  :顺序表结构的指针
     @int x       :插入的数据
*返回结果:
*注意事项: None
*函数作者: 18975491291@163.com
*创建日期: 2024/04/22
*修改历史:
*函数版本: V1.0
**************************************************/

void SeqList_Insert(SeqList *L,int x)
{
	//记录待插入元素的下标
    int temp = -1;
    
    //遍历顺序表,找到插入位置,比较元素
    for (int i = 0;i <= last;++i)
    {
    	if (x < L[i])
    	{
            temp = i;
            break;
        }
    }
    // 如果 temp 仍然是 -1,说明 x 是顺序表中的最小值
    if(-1 =temp)
    {
   		L[1ast+1] = ×;// 在顺序表的末尾插入 x
    	return;
    }
    	
    //把待插入位置的后继元素向后移动
    for (int i = last;i >= temp;i--)
    {
    	L[i+1]=L[i];
	}
	L[temp] = x;
}

image
删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。

/**************************************************
*
*函数名称: SeqList_Remove
*函数功能: 成功删除元素后,返回的值为1,否则返回0,并将删除的元素赋值给e
*函数参数:
     @SeqList *L  :顺序表结构的指针
     @int p       :删除元素的下标
*返回结果:
*注意事项: None
*函数作者: 18975491291@163.com
*创建日期: 2024/04/22
*修改历史:
*函数版本: V1.0
**************************************************/

int SeqList_Remove(*L,int p)
{
    //判断顺序表的地址是否有效
    if( NULL == L)
    {
    	return 0;
    }
    
    //变量e,记录待删除元素的值
    int e = 0;
    
    //把待删别除元素的值备份到变量e中
    e = L[p];
    
	//把待删除元素的后继元素向前移动一个单位
    for (int i = p;i < length;++i)
    {
    	L[i] = L[i+1];
    }
    return 1;
}
posted @ 2024-04-22 21:42  小懿同学  阅读(20)  评论(0)    收藏  举报