博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性表总结
阅读量:5303 次
发布时间:2019-06-14

本文共 1431 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
hdu 3341(ac自动机+状态压缩)
查看>>
51单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码
查看>>
Sql Server中REPLACE函数的使用
查看>>
SqlServerl的行转列
查看>>
JavaScript跨域总结与解决办法
查看>>
Hover功能
查看>>
[LeetCode] Jump Game II
查看>>
js千分位处理
查看>>
js常用的方法
查看>>
Mac---------三指拖移
查看>>
关于VMare中安装Ubuntu的一些说明
查看>>
七、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》
查看>>
字符串类型的相互转换
查看>>
图片编辑的利器(介绍韩国免费图片工具PhotoScape)
查看>>
Python基础第十一天:递归函数
查看>>
钉钉机器人
查看>>
博雅PHP高级工程师面试题-自拟
查看>>
SQL SERVER 查看表是否存在
查看>>
关于easyUI实现自定义网格视图
查看>>
JAVA小知识点-Finally和Return的执行关系
查看>>