编辑代码

#include <stdio.h>
#define DATATYPE1 int
#define MAXSIZE 100  
typedef struct
{
    DATATYPE1 data[MAXSIZE];   //数组date最大长度100,用来存储线性表中的数据元素
    int len;          //len指明线性表长度
}SEQUENLIST;       //定义一个结构体类型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");//线性表LA插入元素
	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++)   //输出LA的元素内容
		printf("%d\t",GET(LA,i));
    printf("\n输入线性表LB的元素,-99结束:\n");//线性表LB插入元素
	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++)  //输出LB的元素内容
		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");//输出LC的元素内容
    for(i=1;i<=LENGTH(LC);i++)
        printf("%d\t",GET(LC,i));


    


    /*SEQUENLIST list,*L;
    L=&list;
    INITIATE(L);
    printf
    scanf("%d",&i);
    j=1;
    while(i!=-99)
    {

    }
    printf("线性表中的元素为:");
    for(i=1;i<=LENGTH(L);i++)
        printf("%d\t",GET(L,i));
    DELETE(L,LOCATE(L,9));
    */
    
   

    
    
    
    
    
    
    
    
    
    
    
    
    
    /*SEQUENLIST LA, LB, LC;  
    INITIATE(&LA);  
    INITIATE(&LB);
    INITIATE(&LC);   
    INSERT(&LA, 1, 1);  
    INSERT(&LA, 2, 5);  
    INSERT(&LA, 3, 2);  
    INSERT(&LB, 1, 4);  
    INSERT(&LB, 2, 6); 
    INSERT(&LC, 1, GET(&LA,1));
    INSERT(&LC, 2, GET(&LA,2));
    INSERT(&LC, 3, GET(&LA,3));
    INSERT(&LC, 4, GET(&LB,1));
    INSERT(&LC, 5, GET(&LB,2));   
    printf("顺序表 LC 的内容: ");  
    for (int i = 1; i <= LENGTH(&LC); i++) {  
        printf("%d\t", GET(&LC, i));  
    }  
    printf("\n");*/
    return 0; 
}