数据结构 线性表 输入一数插入到有序表中,是生成的线性表任然有序

本文介绍了一种在已排序(从大到小)的线性表中插入新元素的算法,并保持线性表有序性的方法。通过遍历数组找到合适位置并进行元素的后移操作来实现插入。

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

有序线性表从大到小排列,西安插入一个数,插入后的线性表依然是有序线性表。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#define Max 100       // 定义数组的最大长度
typedef int Datatype; // 定义数组元素的数据类型
typedef struct
{
    Datatype data[Max]; // data数组用于开辟一段连续的存储空间
    int length;         // 当前长度
}SqList;
int Inet(SqList *L,Datatype x)
{
    int i,j;
    if (L->length >= Max)
    {
        printf("overflow!");
        return 0;
    }
    for (i = 0;i < L->length;i++)
    {
        if(x >= L->data[i])
        {
            for(j = L->length;j >= i;j--)
                L->data[j + 1] = L->data[j]; // 结点后移
            L->data[i] = x;
            L->length++;
            return 1;
        }
    }
    L->data[L->length++] = x;
    return 1;
}

void main()
{
    SqList L;
    Datatype x,a;
    int i;
    L.length=0;
    printf("请从大到小输入线性表,以0结束:\n");
    for(i = 0;i < Max;i++)
    {
        scanf("%d",&a);
        if(a==0)
            break;
        L.data[i] = a;
        L.length++;
    }
    printf("原线性表为:\n");
    for(i = 0;i < L.length;i++)
        printf("%d ",L.data[i]);
    printf("\n线性表长度为:%d\n\n",L.length);
    printf("输入插入数据x:");
    scanf("%d",&x);
    Inet(&L,x);
    printf("\n插入后的线性表为:");
    for(i = 0;i < L.length;i++)
        printf("%d ",L.data[i]);
    printf("\n插入后的线性表长度为:%d\n\n",L.length);
}

运行结果如下图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值