mirror of
https://github.com/kangjianwei/Data-Structure.git
synced 2026-02-06 08:21:44 +08:00
✏️ 更新习题2.24的注释
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
// 确保La和Lb存在
|
||||
if(La == NULL || Lb == NULL || Lc == NULL) {
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
|
||||
InitList(Lc);
|
||||
|
||||
|
||||
// 遍历La和Lb
|
||||
while(La->next!=NULL && Lb->next!=NULL){
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 如果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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user