求C语言程序代码,合并线性表

2024-12-04 18:37:21
推荐回答(1个)
回答1:

#include
#include
#define MAXSIZE 110
typedef struct 
{
    int elem[MAXSIZE];
    int len;
}sqlist;

void merge(sqlist *la,sqlist *lb,sqlist *lc)
{
    int i,j,k;
    i=j=k=0;
    if(la->len+lb->len<=MAXSIZE)
    {    
        while(ilen&&jlen)
        {
            if(la->elem[i]elem[j])
            {
                lc->elem[k]=la->elem[i];
                i++;
                k++;
            }
                else
                {
                    lc->elem[k]=lb->elem[j];
                    j++;
                    k++;
                }
        }
        while(ilen)
        {
            lc->elem[k]=la->elem[i];
            i++;
            k++;
        }

        while(jlen)
        {
            lc->elem[k]=lb->elem[j];
            j++;
            k++;
        }  
        lc->len=la->len+lb->len;
   }
       else printf("out of bound");
}

void print(sqlist *l)
{
    int i;
    for(i=0;ilen;i++)
    {
        printf("%d ",l->elem[i]);             
    }
printf("\n");
}
int main(void)
{
    int i;
    sqlist la;
    sqlist lb;
    sqlist lc;
printf("输入线性表LA的元素个数:");
scanf("%d",&la.len);
printf("输入线性表LA的%d个元素:",la.len);
for(i=0;i scanf("%d",&la.elem[i]);
printf("输入线性表LB的元素个数:");
scanf("%d",&lb.len);
printf("输入线性表LB的%d个元素:",lb.len);
for(i=0;i scanf("%d",&lb.elem[i]);
    merge(&la,&lb,&lc);
    print(&lc);
    system("pause");
    return(0);
}