18
来源:互联网 发布:手机淘宝商家怎么注册 编辑:程序博客网 时间:2024/06/11 14:40
问题
已知三个带有节点的线性表A、B和C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对A表进行如下操作:是操作后的链表A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用的结点。限定算法的时间复杂度为O(m+n+p),其中m、n、p分别为三个表的长度。
分析
先找B和C相同的元素,然后在A中找该元素是否存在
代码
int fun(LinkList &A, LinkList B, LinkList C){ LNode *p1 = A, *p = A -> next, *q = B -> next, *r = C -> next; while(p && q && r) { if(q -> data == r -> data) {///B和C中有相同的元素 while(p) { if(p -> data == q -> data) {///A中有和BC相同的元素,p和p1向后移动即可 if(p -> data != p1 -> data) { p = p -> next; p1 = p1 -> next; }else { p1 -> next = p -> next; free(p); p = p1 -> next; } }else if(p -> data < q -> data) {///A中元素小于BC相同元素,释放该节点 p1 -> next = p -> next; free(p); p = p1 -> next; }else if(p -> data > q -> data) {///A中元素大于BC相同元素,跳出循环,后面不会有相同元素 break; } } q = q -> next; r = r -> next; }else if(p -> data < r -> data) { p = p -> next; }else if(p -> data > r -> data) { r = r -> next; } }}
源代码
http://123.206.59.223:8080/code/code/18.rar
0 0
- 18
- 18
- 18
- 18
- 18
- 18
- 18
- 18
- 18
- 18
- 18
- #18
- 18
- 18
- 18:18 day
- 18顆櫻桃,18次彎腰
- Codeforces 18A 18B 18C
- 18 Log4J
- 10大申请攻略+套磁技巧助你完胜美研申请
- HDU1312-Red and Black
- Gas Station
- 【codevs 3044】 矩形面积求并 【线段树 扫描线 离散化】
- 408. Valid Word Abbreviation
- 18
- 双向冒泡排序(C++)
- 版本控制之svn的简介
- windows下配置owncloud开发环境
- linux下的文件目录
- 08---String标准类成员函数
- Android动画深入分析
- linux的用户管理
- C++及C中的 string char指针及char数组