数据结构顺序表的比较

#include "stdio.h"#include "stdlib.h"#define MAXSIZE 100#define OK 1#define ERRO 0typedef int ElemType;typedef int Status;typedef struct{ ElemType data[MAXSIZE]; int length;}Val;Status InitVal(Val *L){ L->length=0; return OK;}Status ListInsert(Val *L,int i,ElemType e){ int k; if(L->length==MAXSIZE) return ERRO; if(i<1||i>L->length+1) return ERRO; for(k=L->length-1;k>=i-1;k--) L->data[k+1]=L->data[k]; L->data[i-1]=e; L->length++; return OK;}int Compare(Val *A,Val *B){ int i=0; while(ilength&&ilength) { if(A->data[i]>B->data[i]) return 1; else if(A->data[i]data[i]) return -1; else i++; } if(ilength) return 1; else if(ilength) return -1; else return 0;}int main(){ Val A,B; int m,n; int a[m]; int b[n]; printf("请输入顺序表A的元素个数:"); scanf("%d",&m); printf("请输入顺序表A的元素:"); for(int j=0;j<m;j++) { scanf("%d",&a[j]); } printf("请输入顺序表B的元素个数:"); scanf("%d",&n); printf("请输入顺序表B的元素:"); for(int j=0;j<n;j++) { scanf("%d",&b[j]); } int Result=0; InitVal(&A); InitVal(&B); for(int i=1;i<m+1;i++) { ListInsert(&A,i,a[i-1]); } for(int i=1;i<n+1;i++) { ListInsert(&B,i,b[i-1]); } printf("两个顺序表为:\nA:"); for(int i=0;i<m;i++) { printf("%d\t",A.data[i]); } printf("\nB:"); for(int i=0;i<n;i++) { printf("%d\t",B.data[i]); } printf("\n"); Result=Compare(&A,&B); if(Result==1) { printf("A>B\n"); } else if(Result==-1) { printf("A<B\n"); } else if(Result==0) { printf("A=B\n"); }}
我的问题是:这个程序AB两个顺序表前四个是没问题的,从第五个开始B的值就把A的第一个值覆盖了,B的第六个覆盖A的第二个。这是怎么回事,求解

为啥没换行