求助!!!!!

发布于:2022-12-03 ⋅ 阅读:(507) ⋅ 点赞:(0)

在顺序表L里插入一个元素X,不知道哪里错了

代码如下

#include <stdio.h>
#include <stdlib.h>


typedef struct
{
    int number[10];
    int last;
}SeqList;

void init(SeqList *s)//初始化
{
    s->last=0;
}

void create(SeqList *s)//建立顺序表L
{
    int num;
    printf("键入顺序表L,输入0结束。\n");
    scanf("%d",&num);
    while(num)
    {
        s->number[s->last]=num;
        s->last++;
        scanf("%d",&num);
    }
}

void output(SeqList *s)//输出排序前的顺序表
{
    printf("\n输入的顺序表L为:\n");
    for(int i=0;i<s->last;i++)
    {
        printf("-->%d",s->number[i]);
    }
}

void sort(SeqList *s)//顺序表递增排序
{
    int ex;
    for(int i=0;i<s->last;i++)
    {
        for(int j=0;j<s->last-1;j++)
        {
            if(s->number[j]>s->number[j+1])
            {
                ex=s->number[j+1];
                s->number[j+1]=s->number[j];
                s->number[j]=ex;
            }
        }
    }
}

void output2(SeqList *s)//输出排序后的顺序表
{
    printf("排序后的顺序表L为:\n");
    for(int j=0;j<s->last;j++)
    {
        printf("-->%d",s->number[j]);
    }
}

void insert(SeqList *s)//插入元素X
{
    s->last++;
    printf("\n\n输入要插入的元素X:\n");
    int x;
    scanf("%d",&x);
    if(x<=s->number[0])
    {
        for(int j=s->last;j>=1;j++)
        {
            s->number[j]=s->number[j+1];
        }
        s->number[0]=x;
    }
    else if(x>=s->number[s->last])
    {
        s->number[s->last]=x;
    }
    else
    {
        for(int i=0;i<s->last;i++)
        {
            if(x>=s->number[i] && x<=s->number[i+1])
            {
                for(int j=s->last;j>=i+2;j--)
                {
                    s->number[j]=s->number[j-1];
                }
                s->number[i+1]=x;
                break;
            }
        }
    }
}

void sort2(SeqList *s)
{

}

void output3(SeqList *s)
{
    for(int j=0;j<s->last;j++)
    {
        printf("-->%d",s->number[j]);
    }
}

int main()
{
    SeqList s;
    init(&s);
    create(&s);
    output(&s);
    sort(&s);
    printf("\n\n");
    output2(&s);
    insert(&s);
    sort2(&s);
    output3(&s);
}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到