顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)

顺序表的存储结构:

typedef struct{
        int data[Maxsize];  //存在顺序表中的元素
        int length; //存放顺序表的长度
    }SqList;

分析:
要保持插入一个元素后,仍然要保持有序。肯定先要查找插入位置。
怎么找插入位置? 和单链表有什么不同?
定义一个位置变量i, 通过循环i++. 而单链表是p = p->next;
找到了位置如何插入?这里又和单链表有什么不同?
这里是元素后移,让位插入, 而单链表是修改指针即可。

思路:****(查找位置+元素后移插入)
1.定义要查找的位置变量i,
2.通过while循环,条件为x>= L.data[i]; i++;
3.通过循环将后面的元素后移一位,让出空位,再插入
4.既然顺序表插入了一位,那么长度也要增加一位。

C代码实现:

void insert(SqList &L,int x){  //L为引用型参数
        int i = 0,j;
        while(i<L.length && x <= L.data[i]){  //查找元素
            i++;
        }
        for(j = L.length-1; j >= i ; j--)
        L.data[j+1] = L.data[j]; //元素后移
        L.data[i] = x; //插入
        L.length++; //长度加1
    }
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值