线性表总结

1.代码段1简介:采用二路归并法将有序表进行合并。

1.1代码1

void UnionList1(LinkNode * LA, LinkNode * LB, LinkNode &LC)
{ LinkNode
pa=LA->next, * pb=LB-> next,r,s; //1
LC=(LinkNode )malloc( sizeof( LinkNode)); //2
r=LC; //3
while (pa!=NULL && pb!= NULL) //4
{ if (pa -> data< pb -> data) //5
{ s=(LinkNode
)malloc( sizeof(LinkNode); //6
s -> data= pa -> data; //7
r->next=s; //8
r=s; //9
pa=pa - next; //10
}
else
{ s =(LinkNode * )malloc(sizeof( LinkNode)); //11
s-> data=pb-> data; //12
r-> next=s;r= s; //13
pb= pb -> next; //14
}
}
while (pa!= NULL) //15
{ s=(LinkNode ) malloc(sizeof(LinkNode)); //16
s-> data=pa -> data; //17
r > next=s;r=s; //18
pa=pa->next; //19
}
while (pb!= NULL) //20
{ s= (LinkNode
) malloc(sizeof( LinkNode)); //21
s-> data= pb -> data; //22
r-> next=s;r= s; //23
pb=pb -> next; //24
}
r-> next= NULL; //25
}

2.不懂的地方:第3和第8句(包含有指针r的句子)。

语法不懂:为什么要定义一个指针*r指向LC,LC不是空链表么,为什么第8句不直接写成LC->next=s?
分析:该段代码在运行过程中分别扫描LA,LB两个有序表,比较LA,LB当前元素,讲其中较小的元素放入LC中,再从较小元素所在的有序表中取下一个元素。

2.代码段2简介:求两个有序表归并后的中位数

2.1代码2

ElemType M_Search(SqList A,sQlist B)
{ int i=0,j=0,k=0; //1
while(ilength&&jlength) //2
{ k++; //3
if(A->data[i]data[j]) //4
{ if(k==A->length) //5
return A->data[i]; //6
i++; //7
}
else
{ if(k==B->length) //8
return B->data[j]; //9
j++; //10
}
}
}

2.2不懂得地方:2-10句,功能不懂。函数运行归并过程中会将相同的元素删除,为什么k=A->length时进行归并的那个元素就是中位数?

分析:分别扫描顺序表A,B,将较小的数取出后,被取数的顺序表指针往下指,再继续比较两个顺序表的大小,直到找出中位数。

转载于:https://www.cnblogs.com/afairyfairy/p/10595456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值