分别输入顺序表的个数,然后再依次输入非递减有序的顺序表,最后将其合并,要求合并后的顺序表依然非递减有序。(注:非递减有序是指顺序表中任意一个元素的值都大于等于其前驱(如果存在))。
测试输入1:
3
1 2 3
4
4 5 6 7
预期输出1:
7
1 2 3 4 5 6 7
测试输入2:
2
1 2
1
1
预期输出2:
3
1 1 2
补全如下代码·
#include<stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int length;
} Seqlist;
void insert(Seqlist *p, int x);
void show(Seqlist *p);
void insert(Seqlist *p, int x){
int i=0;
while(i<p->length && p->data[i]<=x)///这里要注意i<length,不然最后一个数字如果相同的话就会出错
i++;///把x之前的都遍历下
for(int j=p->length;j>i;j--)
//进行合并
/***********Begin***********/
/************End************/
}
void show(Seqlist *p){
printf("%d\n", p->length); //输出合并后的顺序表元素个数
printf("%d", p->data[0]);//输出合并后的顺序表
for(int i=1;i<p->length;i++)
printf(" %d", p->data[i]);
printf("\n");
}
int main()
{
Seqlist pa;
int i, n, la, lb, a[MAX_SIZE], b[MAX_SIZE];
scanf("%d", &la);//请输入第一个顺序表元素个数
for(i=0;i<la;i++)
scanf("%d", &a[i]);//请输入第一个顺序表
scanf("%d", &lb);//请输入第二个顺序表元素个数
for(i=0;i<lb;i++)
scanf("%d", &b[i]);//请输入第二个顺序表
pa.length = la;
for(i=0;i<la;i++)
pa.data[i] = a[i];
for(i=0;i<lb;i++)
insert(&pa, b[i]);
show(&pa);
return 0;
}
运行结果:
代码:
#include<stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int length;
} Seqlist;
void insert(Seqlist *p, int x);
void show(Seqlist *p);
void insert(Seqlist *p, int x){
int i=0;
while(i<p->length && p->data[i]<=x)///这里要注意i<length,不然最后一个数字如果相同的话就会出错
i++;///把x之前的都遍历下
for(int j=p->length;j>i;j--)
//进行合并
/***********Begin***********/
p->data[j] = p->data[j-1];
p->data[i] = x;
p->length++;
/************End************/
}
void show(Seqlist *p){
printf("%d\n", p->length); //输出合并后的顺序表元素个数
printf("%d", p->data[0]);//输出合并后的顺序表
for(int i=1;i<p->length;i++)
printf(" %d", p->data[i]);
printf("\n");
}
int main()
{
Seqlist pa;
int i, n, la, lb, a[MAX_SIZE], b[MAX_SIZE];
scanf("%d", &la);//请输入第一个顺序表元素个数
for(i=0;i<la;i++)
scanf("%d", &a[i]);//请输入第一个顺序表
scanf("%d", &lb);//请输入第二个顺序表元素个数
for(i=0;i<lb;i++)
scanf("%d", &b[i]);//请输入第二个顺序表
pa.length = la;
for(i=0;i<la;i++)
pa.data[i] = a[i];
for(i=0;i<lb;i++)
insert(&pa, b[i]);
show(&pa);
return 0;
}
引用 皆我百晓生 小程序回复内容作答:
#include<stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int length;
} Seqlist;
void insert(Seqlist *p, int x);
void show(Seqlist *p);
void insert(Seqlist *p, int x){
int i=0;
while(i<p->length && p->data[i]<=x)///这里要注意i<length,不然最后一个数字如果相同的话就会出错
i++;///把x之前的都遍历下
for(int j=p->length;j>i;j--)
{
p->data[j]=p->data[j-1];///把j-1下标后面的元素都往后移一个位置
}
p->data[i] = x;///在x处插入
p->length++;///插入后长度+1
}
void show(Seqlist *p){
printf("%d\n", p->length); //输出合并后的顺序表元素个数
printf("%d", p->data[0]);//输出合并后的顺序表
for(int i=1;i<p->length;i++)
printf(" %d", p->data[i]);
printf("\n");
}
int main()
{
Seqlist pa;
int i, n, la, lb, a[MAX_SIZE], b[MAX_SIZE];
scanf("%d", &la);//请输入第一个顺序表元素个数
for(i=0;i<la;i++)
scanf("%d", &a[i]);//请输入第一个顺序表
scanf("%d", &lb);//请输入第二个顺序表元素个数
for(i=0;i<lb;i++)
scanf("%d", &b[i]);//请输入第二个顺序表
pa.length = la;
for(i=0;i<la;i++)
pa.data[i] = a[i];
for(i=0;i<lb;i++)
insert(&pa, b[i]);
show(&pa);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!【相关推荐】