1 #include<stdio.h> 2 #include<stdlib.h> 3 #define Capacity1 10 4 #define Capacity2 5 5 struct List { 6 int* ElemSet; 7 int len; 8 int capacity; 9 }list1,list2; 10 11 void initList() { 12 list1.len = 0, list2.len = 0; 13 list1.capacity = 10; 14 list2.capacity = 5; 15 list1.ElemSet = (int*)malloc(Capacity1 * sizeof(int)); 16 list2.ElemSet = (int*)malloc(Capacity2 * sizeof(int)); 17 18 if (!list1.ElemSet || !list2.ElemSet) { 19 printf("初始化失败\n"); 20 return; 21 } 22 else { 23 printf("成功创建list1和list2\n"); 24 //给list1初始化5个数据 25 for (int i = 0;i < 5;i++) { 26 list1.ElemSet[i] = i + 1; //1,2,3,4,5 27 list1.len++; 28 } 29 //给list2初始化5个数据 30 for (int i = 0;i < 5;i++) { 31 list2.ElemSet[i] = i + 10; //11,12,13,14,15 32 list2.len++; 33 } 34 } 35 } 36 37 //打印表中数据 38 void showList(struct List list) { 39 for (int i = 0;i < list.len;i++) { 40 printf("%d ", list.ElemSet[i]); 41 } 42 printf("\n"); 43 } 44 45 //在表中插入元素 46 void insertElem(struct List list, int e, int insertIndex) { 47 for (int i = list.len - 1;i >= insertIndex;i--) { 48 list.ElemSet[i + 1] = list.ElemSet[i]; 49 //showList(list); 50 } 51 list.ElemSet[insertIndex] = e; 52 } 53 54 //把list2全部插入到list1中 55 void unionList() { 56 for (int i = 0;i < list2.len;i++) { 57 list1.len++; 58 insertElem(list1, list2.ElemSet[i], list1.len-1 );//注意:总是插入到list1中的最后一个位置,即list1.len-1的位置,list1.len是不段改变的 59 //showList(list1); 60 } 61 showList(list1); 62 printf("表的长度是:%d\n", list1.len); 63 } 64 65 void main() { 66 initList(); 67 printf("表1的数据是:\n"); 68 showList(list1); 69 printf("表2的数据是:\n"); 70 showList(list2); 71 printf("把list2插入到list1后:\n"); 72 unionList(); 73 }