2010级数据结构实验题 1、 已知两个按元素值有序的线性表A和B以顺序存储结构表示,编程实现:将A和B有序归
发布网友
发布时间:2022-05-13 08:27
我来回答
共1个回答
热心网友
时间:2024-02-22 10:25
#include<stdio.h>
#define MAXSIZE 100
#define a1 5
#define b2 6
typedef int datatype;
typedef struct
{
datatype a[MAXSIZE];
int size;
}sequence_list;
void unite(sequence_list *A,sequence_list *B,sequence_list *C);
void main( )
{
sequence_list *A;
sequence_list *B;
sequence_list *C;
int m,n,r;
A->size=a1,B->size=b2,C->size=0;
printf("Input the A array:");
for(m=0;m<A->size;m++)
scanf("%d",&A->a[m]);
printf("\nInput the B array:");
for(n=0;n<B->size;n++)
scanf("%d",&B->a[n]);
unite(A,B,C);
printf("\nThe C array:");
for(r=0;r<C->size;r++)
printf("%d ",C->a[r]);
getch();
}
void unite(sequence_list *A,sequence_list *B,sequence_list *C)
{
int i=0,j=0,k=0,l;
while(i<a1&&j<b2)
{
if(A->a[i]<B->a[j]) /*A和B中的元素比较,较小者赋给C*/
C->a[k++]=A->a[i++];
else if(A->a[i]>B->a[j])
C->a[k++]=B->a[j++];
else /*相同的元素只保存一个*/
{
C->a[k++]=A->a[i++];
j++;
}
}
if(i==a1) /*A已经完了,B未完,将B中余下的元素赋给C*/
for(l=j;l<b2;l++)
C->a[k++]=B->a[l];
if(j==b2) /*B已经完了,A未完,将A中余下的元素赋给C*/
for(l=i;l<a1;l++)
C->a[k++]=A->a[l];
C->size=k;
}