diff --git a/CLion/ExerciseBook/02.24/02.24.c b/CLion/ExerciseBook/02.24/02.24.c index 3ed2d12..1b14a97 100644 --- a/CLion/ExerciseBook/02.24/02.24.c +++ b/CLion/ExerciseBook/02.24/02.24.c @@ -19,12 +19,18 @@ int main(int argc, char* argv[]) { LinkList La, Lb, Lc; int i; + // 0号单元存储的是数组长度 + int a[] = {10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; + int b[] = {8, 2, 3, 6, 7, 10, 15, 17, 20}; + // 准备测试数据 InitList(&La); InitList(&Lb); - for(i = 1; i <= 5; i++) { - ListInsert(La, i, 2 * i - 1); - ListInsert(Lb, i, 2 * i); + for(i = 1; i <= a[0]; i++) { + ListInsert(La, i, a[i]); + } + for(i = 1; i <= b[0]; i++) { + ListInsert(Lb, i, b[i]); } printf("La = "); ListTraverse(La, PrintElem); @@ -57,13 +63,19 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { pa = La->next; pb = Lb->next; - // 摘下La和Lb中较小的元素 + // 摘下La中较小的元素 if(pa->data<=pb->data) { La->next = pa->next; + + // 将摘下的元素通过头插法插入到Lc pa->next = (*Lc)->next; (*Lc)->next = pa; + + // 摘下Lb中较小的元素 } else { Lb->next = pb->next; + + // 将摘下的元素通过头插法插入到Lc pb->next = (*Lc)->next; (*Lc)->next = pb; } @@ -73,6 +85,7 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { while(La->next!=NULL){ pa = La->next; La->next = pa->next; + pa->next = (*Lc)->next; (*Lc)->next = pa; } @@ -81,6 +94,7 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { while(Lb->next!=NULL){ pb = Lb->next; Lb->next = pb->next; + pb->next = (*Lc)->next; (*Lc)->next = pb; } @@ -90,5 +104,5 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { // 测试函数,打印元素 void PrintElem(ElemType e) { - printf("%d ", e); + printf("%2d ", e); } diff --git a/Dev-C++/ExerciseBook/02.24/02.24.cpp b/Dev-C++/ExerciseBook/02.24/02.24.cpp index dcecc52..735ec1b 100644 --- a/Dev-C++/ExerciseBook/02.24/02.24.cpp +++ b/Dev-C++/ExerciseBook/02.24/02.24.cpp @@ -18,25 +18,31 @@ void PrintElem(ElemType e); int main(int argc, char* argv[]) { LinkList La, Lb, Lc; int i; - + + // 0ŵԪ洢鳤 + int a[] = {10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; + int b[] = {8, 2, 3, 6, 7, 10, 15, 17, 20}; + // ׼ InitList(&La); InitList(&Lb); - for(i = 1; i <= 5; i++) { - ListInsert(La, i, 2 * i - 1); - ListInsert(Lb, i, 2 * i); + for(i = 1; i <= a[0]; i++) { + ListInsert(La, i, a[i]); + } + for(i = 1; i <= b[0]; i++) { + ListInsert(Lb, i, b[i]); } printf("La = "); ListTraverse(La, PrintElem); printf("Lb = "); ListTraverse(Lb, PrintElem); - + // 鲢 Algo_2_24(La, Lb, &Lc); - + printf("Lc = "); ListTraverse(Lc, PrintElem); - + return 0; } @@ -44,43 +50,51 @@ int main(int argc, char* argv[]) { // 鲢Ϊһݼ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { LinkList pa, pb; - + // ȷLaLb if(La == NULL || Lb == NULL || Lc == NULL) { return ERROR; } - + InitList(Lc); - + // LaLb while(La->next!=NULL && Lb->next!=NULL){ pa = La->next; pb = Lb->next; - - // ժLaLbнСԪ + + // ժLaнСԪ if(pa->data<=pb->data) { La->next = pa->next; + + // ժµԪͨͷ巨뵽Lc pa->next = (*Lc)->next; (*Lc)->next = pa; + + // ժLbнСԪ } else { Lb->next = pb->next; + + // ժµԪͨͷ巨뵽Lc pb->next = (*Lc)->next; (*Lc)->next = pb; } } - + // Laʣ࣬LaʣԪز뵽Lc while(La->next!=NULL){ pa = La->next; La->next = pa->next; + pa->next = (*Lc)->next; (*Lc)->next = pa; } - + // Lbʣ࣬LbʣԪز뵽Lc while(Lb->next!=NULL){ pb = Lb->next; Lb->next = pb->next; + pb->next = (*Lc)->next; (*Lc)->next = pb; } @@ -90,5 +104,6 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { // ԺӡԪ void PrintElem(ElemType e) { - printf("%d ", e); + printf("%2d ", e); } + diff --git a/VisualC++/ExerciseBook/02.24/02.24.c b/VisualC++/ExerciseBook/02.24/02.24.c index dcecc52..0e7d256 100644 --- a/VisualC++/ExerciseBook/02.24/02.24.c +++ b/VisualC++/ExerciseBook/02.24/02.24.c @@ -19,12 +19,18 @@ int main(int argc, char* argv[]) { LinkList La, Lb, Lc; int i; + // 0ŵԪ洢鳤 + int a[] = {10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; + int b[] = {8, 2, 3, 6, 7, 10, 15, 17, 20}; + // ׼ InitList(&La); InitList(&Lb); - for(i = 1; i <= 5; i++) { - ListInsert(La, i, 2 * i - 1); - ListInsert(Lb, i, 2 * i); + for(i = 1; i <= a[0]; i++) { + ListInsert(La, i, a[i]); + } + for(i = 1; i <= b[0]; i++) { + ListInsert(Lb, i, b[i]); } printf("La = "); ListTraverse(La, PrintElem); @@ -57,13 +63,19 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { pa = La->next; pb = Lb->next; - // ժLaLbнСԪ + // ժLaнСԪ if(pa->data<=pb->data) { La->next = pa->next; + + // ժµԪͨͷ巨뵽Lc pa->next = (*Lc)->next; (*Lc)->next = pa; + + // ժLbнСԪ } else { Lb->next = pb->next; + + // ժµԪͨͷ巨뵽Lc pb->next = (*Lc)->next; (*Lc)->next = pb; } @@ -73,6 +85,7 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { while(La->next!=NULL){ pa = La->next; La->next = pa->next; + pa->next = (*Lc)->next; (*Lc)->next = pa; } @@ -81,6 +94,7 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { while(Lb->next!=NULL){ pb = Lb->next; Lb->next = pb->next; + pb->next = (*Lc)->next; (*Lc)->next = pb; } @@ -90,5 +104,5 @@ Status Algo_2_24(LinkList La, LinkList Lb, LinkList* Lc) { // ԺӡԪ void PrintElem(ElemType e) { - printf("%d ", e); + printf("%2d ", e); }