7-1 递增有序顺序表的插入

分数 15

作者 daxuejsj

单位 安阳工学院

实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现。
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。

输入格式:

第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。

输出格式:

对每一组输入,在一行中输出插入X后的递增的顺序表。

输入样例:

在这里给出一组输入。例如:

5
1 3 5 7 9
6

输出样例:

在这里给出相应的输出。例如:

1,3,5,6,7,9,

代码长度限制  16 KB

时间限制  400 ms

内存限制  64 MB


1、顺序结构实现:

#include<iostream>
using namespace std;

int numb[100000], isN;
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> numb[i];
    cin >> isN;
    for (int i = 0; i < n; i++)
        if (isN < numb[i])//内部插入isN
        {
            //j等于++n更新后数组元素个数,将当前i及以后的元素后移
            for (int j = ++n; j > i - 1; j--)
                numb[j] = numb[j - 1];
            numb[i] = isN;//在下标i位置插入
            break;
        }
        else if (i == n - 1)//最后一位置插入isN
        {
            numb[n++] = isN;
            break;
        }

    for (int i = 0; i < n; i++)
        cout << numb[i] << ",";
    return 0;
}

2、链式结构实现(强烈不推荐,作业要求而已(doge

#include<iostream>
using namespace std;

typedef struct LNode
{
    int Data;
    struct LNode *Next;
}*List;

List Create()
{
    List L = new LNode;
    L->Data = NULL;//头节点不作存贮
    L->Next = NULL;
    return L;
}
List In(List L)//链表构建
{
    int X, numb;
    cin >> X;
    List Current = L;//辅助指针
    for (int i = 0; i < X; i++)
    {
        cin >> numb;
        //创新结点
        List New = new LNode;
        New->Data = numb;
        New->Next = NULL;
        //新结点插入
        Current->Next = New;
        Current = New;
    }
    return L;
}

List Insert(List L, int X)//元素插入
{
    List Current = L;
    //建新结点
    List New = new LNode;
    New->Data = X;
    New->Next = NULL;

    while (Current)
    {
        if (X < Current->Next->Data)
            break; //找到位置
        else
            Current = Current->Next;
    }
    if (Current == NULL)//X大于链表所有元素
    {
        Current->Next = New;
    }
    else //X在链内插入
    {
        New->Next = Current->Next;
        Current->Next = New;
    }
    return L;
}
void See(List L)//打印
{
    List Current = L->Next;
    while (Current)
    {
        cout << Current->Data << " ";
        Current = Current->Next;
    }
}
int main()
{
    List L1;
    L1 = Create();
    L1 = In(L1);
    int Innumb;
    cin >> Innumb;
    L1 = Insert(L1, Innumb);
    See(L1);
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值