合并A,B为线性表C(表C用顺序表实现)

设有线性表A=(a1,a2,…,am),B=(b1,b2,…,bn)。试编写一个合并A,B为线性表C的算法,使得 a1, b1,a2, b2,…, am ,bm, bm+1,…,bn   

当m<=n时:C= a1, b1,a2, b2,…, am ,bm, bm+1,…,bn

当m>n时: C=a1, b1,a2, b2,…, an ,bn, an+1,…,am

#include 
   
   
    
    
#include 
    
    
     
     
#define MAXSIZE 60

typedef struct
{
    int a[MAXSIZE];
    int size;
} sequencelist;


/*初始化顺序表*/
void init(sequencelist *A,sequencelist *B,sequencelist *C)
{
    A->size=0;
    B->size=0;
    C->size=0;
}

void inputAB(sequencelist *A,sequencelist *B)
{
    int a,i=0;
    printf("请输入顺序表A的内容(以-1结束):
");
    do
    {
        scanf("%d",&a);
        if(a!=-1)
        {
            A->a[i]=a;
            A->size++;
            i++;
        }
    }
    while(a!=-1&&i
     
     
      
      a[i]=a;
            B->size++;
            i++;
        }
    }
    while(a!=-1&&i
      
      
       
       =A.size){
	        C->a[i]=B.a[k];
                k++;	
	        }else{
                C->a[i]=A.a[j];
                j++;
				}
        }
        else{
        	if(k>=B.size){
	        C->a[i]=A.a[j];
                j++;	
	        }
	        else{
        	C->a[i]=B.a[k];
            k++;	
        	}
        }
        C->size++;
        }
}



void printAB(sequencelist A,sequencelist B)
{
        int i;
        printf("顺序表A的内容为:
");
        for(i=0; i
#include #include #define MAXSIZE 60 typedef struct { int a[MAXSIZE]; int size; } sequencelist; /*初始化顺序表*/ void init(sequencelist *A,sequencelist *B,sequencelist *C) { A->size=0; B->size=0; C->size=0; } void inputAB(sequencelist *A,sequencelist *B) { int a,i=0; printf("请输入顺序表A的内容(以-1结束): "); do { scanf("%d",&a); if(a!=-1) { A->a[i]=a; A->size++; i++; } } while(a!=-1&&i a[i]=a; B->size++; i++; } } while(a!=-1&&i =A.size){ C->a[i]=B.a[k]; k++; }else{ C->a[i]=A.a[j]; j++; } } else{ if(k>=B.size){ C->a[i]=A.a[j]; j++; } else{ C->a[i]=B.a[k]; k++; } } C->size++; } } void printAB(sequencelist A,sequencelist B) { int i; printf("顺序表A的内容为: "); for(i=0; i
经验分享 程序员 微信小程序 职场和发展