在顺序表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);
}