顺序表的合并这样为什么没结果

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 180
#define ElemType
typedef struct{
int ElemType data[MAXSIZE];
int length;}
SeqList;
void InitList(SeqList L){
L.length=0;
}
void CreateList(SeqList *L, int x)//线性表的赋值操作for(int i-0;i<x;i++)
{
for(int i =0;i<x;i++){
printf("输入数据元素:");
int data;
scanf("%d",&data);
(*L).data[i]=data;
(*L).length++;}
}
void ListTraverse(SeqList L)
{ /* 初始条件:顺序线性表L已存在 */
int ElemType *p;
int i;
p=L.data;
for(i=1;i<=L.length;i++)
printf("%3d",*p++);
printf("\n");
}
void MergeList(SeqList L1, SeqList L2, SeqList *L3)
{
int i=0,j=0,k=0;
while((i<L1.length)&&(j<L2.length)){
if(L1.data[i]>L2.data[j]){
(*L3).data[k++]=L2.data[j++];(*L3).length++;
}
else{
(*L3).data[k++]-L1.data[i++];(*L3).length++;
}
}
while(i<L1.length){//当1表不为空时,将1表所剩元素填入3表
(*L3).data[k++]=L1.data[i++];
(*L3).length++;
}
}
int main()
{
int n,m;
printf("输入顺序表1元素个数:");
scanf("%d",&n);
printf("输入顺序表2元素个数:");
scanf("%d",&m);
SeqList L1,L2,L3;
InitList(L1),InitList(L2),InitList(L3);
printf("创建顺序表1\n");
CreateList(&L1,n);
printf("创建顺序表2\n");
CreateList(&L2,m);
MergeList(L1,L2,&L3);
printf("结果\n");
ListTraverse(L3);
return 0;
}

(*L3).data[k++]-L1.data[i++];(*L3).length++;
这咋用减号?不应该等于号吗?
while(i<L1.length) ===为什么只考虑L1还有值呢?如果L2更大呢?
修改如下:

#define MAXSIZE 180
#define ElemType int 
typedef struct _SeqList
{
    ElemType data[MAXSIZE];
    int length;
}SeqList;

void CreateList(SeqList *L, int x)//线性表的赋值操作for(int i-0;i<x;i++)
{
    for(int i =0;i<x;i++)
    {
        printf("输入数据元素:");
        int data;
        scanf("%d",&data);
        (*L).data[i]=data;
        (*L).length++;}
}
void ListTraverse(SeqList L)
{ /* 初始条件:顺序线性表L已存在 */
    ElemType *p;
    int i;
    p=L.data;
    for(i=1;i<=L.length;i++)
        printf("%3d",*p++);
    printf("\n");
}
void MergeList(SeqList L1, SeqList L2, SeqList *L3)
{
    int i=0,j=0,k=0;
    while((i<L1.length)&&(j<L2.length))
    {
        if(L1.data[i]>L2.data[j]){
            (*L3).data[k++]=L2.data[j++];(*L3).length++;
        }
        else{
            (*L3).data[k++]=L1.data[i++];(*L3).length++;
        }
    }
    while(i<L1.length){//当1表不为空时,将1表所剩元素填入3表
        (*L3).data[k++]=L1.data[i++];
        (*L3).length++;
    }
    while(j<L2.length){//当1表不为空时,将1表所剩元素填入3表
        (*L3).data[k++]=L2.data[j++];
        (*L3).length++;
    }
}
int main()
{
    int n,m;
    printf("输入顺序表1元素个数:");
    scanf("%d",&n);
    printf("输入顺序表2元素个数:");
    scanf("%d",&m);
    SeqList L1,L2,L3;
    L1.length = L2.length = L3.length = 0;
    printf("创建顺序表1\n");
    CreateList(&L1,n);
    printf("创建顺序表2\n");
    CreateList(&L2,m);
    MergeList(L1,L2,&L3);
    printf("结果\n");
    ListTraverse(L3);
    return 0;
}