合并两个顺序表
1 #include<stdio.h> 2 #define MAX 100 3 typedef struct 4 { 5 int e[MAX]; 6 int last; 7 }list; 8 void hb(list *A,list *B,list *C) 9 { 10 int i=0,j=0,t=0; 11 while((i<=A->last)&&(j<=B->last)) 12 { 13 if(A->e[i]<B->e[j]) 14 { 15 C->e[t]=A->e[i]; 16 i++;t++; 17 } 18 else 19 { 20 C->e[t]=B->e[j]; 21 j++;t++; 22 } 23 } 24 while(i<=A->last) 25 { 26 C->e[t]=A->e[i]; 27 i++;t++; 28 } 29 while(j<=B->last) 30 { 31 C->e[t]=B->e[j]; 32 j++;t++; 33 } 34 C->last=A->last+B->last+1; 35 } 36 37 int main() 38 { 39 list A,B,C; 40 int a,b,i; 41 printf("请输入A[] B[]的大小:"); 42 scanf("%d %d",&a,&b); 43 A.last=a-1; B.last=b-1; 44 C.last=a+b-1; 45 printf("请输入A[]\n"); 46 for(i=0;i<a;i++) 47 scanf("%d",&A.e[i]); 48 printf("请输入B[]\n"); 49 for(i=0;i<b;i++) 50 scanf("%d",&B.e[i]); 51 hb(&A,&B,&C); 52 printf("合并后:\n"); 53 for(i=0;i<C.last;i++) 54 printf("%d ",C.e[i]); 55 printf("\n"); 56 return 0; 57 }
加油
见贤思齐焉见不贤而内自省也