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

博客主要围绕顺序表有序插入元素展开。分析了插入元素时查找插入位置及插入操作与单链表的不同,查找位置顺序表用循环i++,单链表是p = p->next;插入时顺序表需元素后移,单链表修改指针。给出思路并展示了C代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺序表的存储结构:

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
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值