#include <stdio.h>
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 data[MAXSIZE];
int len;
}SEQUENLIST;
void INITIATE(SEQUENLIST *L)
{
L->len=0;
return;
}
int LENGTH(SEQUENLIST *L)
{
return(L->len);
}
DATATYPE1 GET( SEQUENLIST *L,int i)
{
if(i<1||i>L->len)
return(-1);
else
return(L->data[i-1]);
}
int LOCATE( SEQUENLIST *L,DATATYPE1 x)
{
int k;
k=1;
while(k<=L->len&&L->data[k-1]!=x)
k++;
if(k<=L->len)
return(k);
else
return(0);
}
void INSERT(SEQUENLIST *L,int i,DATATYPE1 b)
{
int k;
if(i<1||i>L->len+1||L->len>=MAXSIZE)
printf("error");
else
{
for(k=L->len;k>=i;k--)
L->data[k]=L->data[k-1];
L->data[i-1]=b;
L->len++;
}
}
void DELETE(SEQUENLIST *L,int i)
{
int k;
if(i<1||i>L->len||L->len==0)
printf("error");
else
{
for(k=i+1;k<=L->len;k++)
L->data[k-2]=L->data[k-1];
L->len--;
}
}
int EMPTY(SEQUENLIST *L)
{
if(L->len==0)
return(1);
else
return(0);
}
void MERGE(SEQUENLIST *LA, SEQUENLIST *LB, SEQUENLIST *LC) {
INITIATE(LC);
for (int i = 1; i <= LENGTH(LA); i++) {
INSERT(LC, LENGTH(LC) + 1, GET(LA, i));
}
for (int i = 1; i <= LENGTH(LB); i++) {
INSERT(LC, LENGTH(LC) + 1, GET(LB, i));
}
}
int main() {
SEQUENLIST A,B,C,*LA,*LB,*LC;
LA=&A;
LB=&B;
LC=&C;
INITIATE(LA);
INITIATE(LB);
INITIATE(LC);
int i,j;
printf("输入线性表LA的元素,-99结束:\n");
scanf("%d",&i);
j=1;
while(i!=-99)
{
INSERT(LA,j,i);
j++;
scanf("%d",&i);
}
printf("\n输出LA元素:\n");
for(i=1;i<=LENGTH(LA);i++)
printf("%d\t",GET(LA,i));
printf("\n输入线性表LB的元素,-99结束:\n");
scanf("%d",&i);
j=1;
while(i!=-99)
{
INSERT(LB,j,i);
j++;
scanf("%d",&i);
}
printf("\n输出LB元素:\n");
for(i=1;i<=LENGTH(LB);i++)
printf("%d\t",GET(LB,i));
int k=1;
i=1;
j=1;
while(i<=LENGTH(LA)&&j<= LENGTH(LB))
{
if(GET(LA,i)< GET(LB,j))
{INSERT(LC,k, GET(LA,i));
k++;
i++;}
else
{INSERT(LC,k, GET(LB,j));
k++;j++;}
}
if(LENGTH(LA)>LENGTH(LB))
{while(i<=LENGTH(LA))
{
INSERT(LC,k,GET(LA,i));i++;k++;
}
}
else
{while(j<=LENGTH(LB))
{INSERT(LC,k, GET(LB,j));j++;k++;}
}
printf("\n输出LC元素:\n");
for(i=1;i<=LENGTH(LC);i++)
printf("%d\t",GET(LC,i));
return 0;
}