C语言数组下标问题debug

问题是:将两个同样长度的有序的线性表组合成一个有序的线性表
代码:

#define MaxSize 10
typedef struct{
    int Data[MaxSize];
    int Length;
}Seqlist;

Seqlist *MiddleNum(Seqlist *t1,Seqlist *t2){
    Seqlist *list1=t1,*list2=t2,*list3;
    list3->Length=list1->Length+list2->Length;
    int count=0,q=0,p=0;
    while(p<(list1->Length)&&q<(list2->Length)){
    if(list2->Data[q]<=list1->Data[p]){
        list3->Data[count]=list2->Data[q];
        q++;
        count++;
    }
    else{
        list3->Data[count]=list1->Data[p];
        p++;
        count++;
    }
    }
    printf("%d\n%d\n%d\n",p,q,count);
    return list3;
}

测试用例:
list1:3 4 5 8 9
list2:0 1 2 6 7
期望输出:
list3:0 1 2 3 4 5 6 7 8 9
Bug位置:
第一次进入if循环之后,list2->data[5]从7被误改成0了
求debug

img

img

Seqlist *list1=t1,*list2=t2,list3;
list3->Length=list1->Length+list2->Length;
这里list3只是一个指针,接着就进行list3->操作,会崩溃的
所以这里要先 list3 = (Seqlist
)malloc(sizeof(Seqlist));
然后 list3->Length=list1->Length+list2->Length;