941: 有序顺序表的合并操作的实现

Phyllis ·
更新时间:2024-11-13
· 869 次阅读

题目描述已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)输入输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;
第二行为n个自然数构成的非递减顺序线性表;
第三行为自然数m,表示第二个非递减顺序线性表的长度;
第四行为m个自然数构成的非递减顺序线性表。
输出输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入复制2
1 3
3
2 3 6
样例输出复制1 2 3 3 6
代码 C语言实现
#include
#include
typedef struct splist
{
int data[100];
int length;
}Splist;
void Creat(Splist *&L,int a[],int n)
{
L=(Splist *)malloc(sizeof(Splist));
for (int i=0;i<n;i++)
{
L->data[i]=a[i];
}
L->length=n;
}
void Input(int a[],int num)
{
for (int i=0;i<num;i++)
{
scanf ("%d",&a[i]);
}
}
void Add(Splist *A,Splist *B,Splist *&H)
{
H=(Splist *)malloc(sizeof(Splist));
H->length=A->length+B->length;
for (int i=0;ilength;i++)
{
H->data[i]=A->data[i];
}
for (int i=A->length,j=0;jlength,ilength;i++,j++)
{
H->data[i]=B->data[j];
}
for (int i=0;ilength;i++)
{
for (int j=i+1;jlength;j++)
{
if (H->data[i]>H->data[j])
{
int temp=H->data[i];
H->data[i]=H->data[j];
H->data[j]=temp;
}
}
}
}
int Printf(Splist *H)
{
for (int i=0;ilength;i++)
{
printf ("%d “,H->data[i]);
}
}
int main()
{
int num1;
scanf (”%d",&num1);
int a[num1];
Input(a,num1);
int num2;
scanf ("%d",&num2);
int b[num2];
Input(b,num2);
Splist *A,*B;
Creat(A,a,num1);
Creat(B,b,num2);
Splist *H;
Add(A,B,H);
Printf(H);
return 0;
}


作者:Tom_PangHu



顺序表

需要 登录 后方可回复, 如果你还没有账号请 注册新账号