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

该代码实现了一个有序顺序表的插入操作。程序首先读取递增有序的顺序表,然后插入一个新元素,保持列表的有序性。主要涉及线性表的基本知识和存储结构的理解与应用。

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

实验目的: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

#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>

struct element
{
    int data;
    struct element* next;
};

typedef struct element ele;

ele* read();

ele* insect(ele* head);

void printE(ele* head);

int main()
{
    ele* head = read();
    head = insect(head);
    printE(head);
    return 0;
}

ele* read()
{
    ele* head = (ele*)malloc(sizeof(struct element));
    head->next = NULL;
    int num, temp = 1;
    scanf("%d", &num);
    ele* p = (ele*)malloc(sizeof(struct element));
    while (1)
    {

        p->next = (ele*)malloc(sizeof(struct element));
        if (temp == 1)
        {
            head = p;
        }
        scanf("%d", &p->data);
        if (temp == num)
        {
            p->next = NULL;
            break;
        }
        p = p->next;
        temp++;
    }
    return head;
}

ele* insect(ele* head)
{
    ele* res = head;
    int Data;
    scanf("%d", &Data);
    ele* p1;
    p1 = head;
    ele* tmp = (ele*)malloc(sizeof(struct element));
    tmp->data = Data;
    while (1)
    {
        if (p1->data > Data)
        {
            tmp->next = p1;
            res = tmp;
            break;
        }
        if (p1->next == NULL)
        {
            p1->next = (ele*)malloc(sizeof(struct element));
            {
                p1->next = tmp;
                tmp->next = NULL;
            }
            break;
        }
        ele* p2 = p1->next;
        if (p2->data > Data)
        {
            tmp->next = p1->next;
            p1->next = tmp;
            break;
        }

        p1 = p1->next;
    }
    return res;
}

void printE(ele* head)
{
    ele* p1;
    p1 = head;
    while (1)
    {
        printf("%d,", p1->data);
        if (p1->next == NULL)
        {
            break;
        }
        p1 = p1->next;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想换电脑的LoongLy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值