有序顺序表的插入 本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表

本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。
比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。
要考虑扩容的问题。

输入样例:
5
2 3 9 8 4

输出样例:
2 3 4 8 9

自定义函数部分:

//思路:判断顺序表是否为空,如果为空,则把该数据放在首位,表长加一。如果不为空,则先检查顺序表是否已经满了,满的话进行扩容操作,然后对数据进行比较,按顺序插入,表长加一。
//注意:起初顺序表为空,无法比较。插入时,可能是最大的,需要将其放在“末尾”加一的位置。顺序表表可能会满,满了要进行扩容。 
Status ListInsert_SortedSq(SqList &L, ElemType e)
{
    if(L.length==0)
        //判断顺序表是否为空。如果为空,则把该数据放在首位,表长加一。。 
    {
        *L.elem=e;
        L.length++;
    }
    else
    {
     //如过不为空,则先检查顺序表是否已经满了。 
        while(L.length==L.listsize)
        //满的话进行扩容操作。 
        {
            L.elem=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
            if(!L.elem)
            {
                exit(OVERFLOW);
            }
            L.listsize+=LISTINCREMENT;
        }
        //对数据进行比较 ,按顺序插入,表长加一。 
        int i;
        for(i=0;i<L.length;i++)
        {
            if(e<*(L.elem+i))
            {
                for(int j=L.length-1;j>=i;j--)
                {
                    *(L.elem+j+1)=*(L.elem+j);
                }
                *(L.elem+i)=e;
                break;
            }
               }
               if(i>=L.length)
      {
               *(L.elem+L.length)=e;
           }
        L.length++;
    }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值